Freigeben über


ApplicationManager.CreateObject Methode

Definition

Erstellt ein Objekt für die angegebene Anwendungsdomäne und den angegebenen Objekttyp.

Überlädt

CreateObject(IApplicationHost, Type)

Erstellt ein Objekt für die angegebene Anwendungsdomäne, basierend auf dem Typ.

CreateObject(String, Type, String, String, Boolean)

Erstellt anhand des Typs oder virtuellen bzw. physischen Pfads ein Objekt für die angegebene Anwendungsdomäne und einen booleschen Wert, der das Verhalten bei Fehlern angibt, wenn bereits ein Objekt vom angegebenen Typ vorhanden ist.

CreateObject(String, Type, String, String, Boolean, Boolean)

Erstellt anhand des Typs oder virtuellen bzw. physischen Pfads ein Objekt für die angegebene Anwendungsdomäne, einen booleschen Wert, der das Verhalten bei Fehlern angibt, wenn bereits ein Objekt vom angegebenen Typ vorhanden ist, sowie einen booleschen Wert, der angibt, ob bei Hostinitialisierungsfehlern Ausnahmen ausgelöst werden.

CreateObject(IApplicationHost, Type)

Erstellt ein Objekt für die angegebene Anwendungsdomäne, basierend auf dem Typ.

public:
 System::Web::Hosting::IRegisteredObject ^ CreateObject(System::Web::Hosting::IApplicationHost ^ appHost, Type ^ type);
public System.Web.Hosting.IRegisteredObject CreateObject (System.Web.Hosting.IApplicationHost appHost, Type type);
member this.CreateObject : System.Web.Hosting.IApplicationHost * Type -> System.Web.Hosting.IRegisteredObject
Public Function CreateObject (appHost As IApplicationHost, type As Type) As IRegisteredObject

Parameter

appHost
IApplicationHost

Ein IApplicationHost-Objekt.

type
Type

Der Typ des zu erstellenden Objekts.

Gibt zurück

Ein neues Objekt des in type angegebenen Typs.

Ausnahmen

Für die Anwendung ist kein physischer Pfad vorhanden.

appHost ist null.

- oder -

type ist null.

Hinweise

CreateObjectwird in der .NET Framework Version 3.5 eingeführt. Weitere Informationen finden Sie unter Versionen und Abhängigkeiten.

Gilt für:

CreateObject(String, Type, String, String, Boolean)

Erstellt anhand des Typs oder virtuellen bzw. physischen Pfads ein Objekt für die angegebene Anwendungsdomäne und einen booleschen Wert, der das Verhalten bei Fehlern angibt, wenn bereits ein Objekt vom angegebenen Typ vorhanden ist.

public:
 System::Web::Hosting::IRegisteredObject ^ CreateObject(System::String ^ appId, Type ^ type, System::String ^ virtualPath, System::String ^ physicalPath, bool failIfExists);
public System.Web.Hosting.IRegisteredObject CreateObject (string appId, Type type, string virtualPath, string physicalPath, bool failIfExists);
member this.CreateObject : string * Type * string * string * bool -> System.Web.Hosting.IRegisteredObject
Public Function CreateObject (appId As String, type As Type, virtualPath As String, physicalPath As String, failIfExists As Boolean) As IRegisteredObject

Parameter

appId
String

Der eindeutige Bezeichner für die Anwendung, die das Objekt besitzt.

type
Type

Der Typ des zu erstellenden Objekts.

virtualPath
String

Der virtuelle Pfad zur Anwendung.

physicalPath
String

Der physische Pfad zur Anwendung.

failIfExists
Boolean

true, um eine Ausnahme auszulösen, wenn ein Objekt vom angegebenen Typ derzeit registriert ist, false, um das vorhandene registrierte Objekt vom angegebenen Typ zurückzugeben.

Gibt zurück

Ein neues Objekt vom angegebenen type.

Ausnahmen

physicalPath ist gleich null.

- oder -

physicalPath ist kein gültiger Anwendungspfad.

- oder -

Die IRegisteredObject-Schnittstelle wird von type nicht implementiert.

appID ist null.

- oder -

type ist null.

failIfExists ist true, und ein Objekt vom angegebenen Typ ist bereits registriert.

Beispiele

Das folgende Codebeispiel ist eine Implementierung des Objekt-Factory-Entwurfsmusters für registrierte Objekte. Mithilfe des Factorymusters können Sie mehrere Instanzen eines Objekts registrieren. Das Beispiel enthält zwei Objekte: SampleComponent, das das Objekt ist, das die Anwendung mehrere Instanzen von verwendet, und SampleComponentFactory, das eine Liste von SampleComponent Instanzen verwaltet.

using System.Web.Hosting;

public class SampleComponentFactory : IRegisteredObject
{
  private ArrayList components = new ArrayList();

  public void Start()
  {
    HostingEnvironment.RegisterObject(this);
  }

  void IRegisteredObject.Stop(bool immediate)
  {
    foreach (SampleComponent c in components)
    {
      ((IRegisteredObject)c).Stop(immediate);
    }
    HostingEnvironment.UnregisterObject(this);
  }

  public SampleComponent CreateComponent()
  {
    SampleComponent newComponent = new SampleComponent();
    newComponent.Initialize();
    components.Add(newComponent);
    return newComponent;
  }
}

public class SampleComponent : IRegisteredObject
{
  void IRegisteredObject.Stop(bool immediate)
  {
    // Clean up component resources here.
  }
  
  public void Initialize()
  {
    // Initialize component here.
  }
}
Imports System.Web.Hosting

Public Class SampleComponentFactory
  Implements IRegisteredObject

  Dim components As ArrayList = New ArrayList()

  Public Sub Start()
    HostingEnvironment.RegisterObject(Me)
  End Sub

  Public Sub [Stop](ByVal immediate As Boolean) Implements System.Web.Hosting.IRegisteredObject.Stop
    For Each c As SampleComponent In components
      CType(c, IRegisteredObject).Stop(immediate)
    Next
    HostingEnvironment.UnregisterObject(Me)
  End Sub

  Public Function CreateComponent() As SampleComponent
    Dim newComponent As SampleComponent
    newComponent = New SampleComponent
    newComponent.Initialize()

    components.Add(newComponent)
    Return newComponent
  End Function
End Class

Public Class SampleComponent
  Implements IRegisteredObject


  Sub [Stop](ByVal immediate As Boolean) Implements System.Web.Hosting.IRegisteredObject.Stop
    ' Clean up component resources here.
  End Sub

  Public Sub Initialize()
    ' Initialize component here.
  End Sub
End Class

Hinweise

Die CreateObject -Methode wird verwendet, um Objekte in der Anwendung zu erstellen und zu registrieren. Es kann nur ein Objekt jedes Typs erstellt werden. Wenn Sie mehrere Objekte desselben Typs erstellen müssen, müssen Sie eine Objektfactory implementieren. Weitere Informationen finden Sie im Codebeispiel in diesem Thema.

Jede Anwendung, die durch einen eindeutigen Anwendungsbezeichner identifiziert wird, wird in ihrer eigenen Anwendungsdomäne ausgeführt. Die CreateObject -Methode erstellt ein Objekt des angegebenen Typs in der Anwendungsdomäne der anwendung, die appID im Parameter angegeben ist. Wenn für die angegebene Anwendung keine Anwendungsdomäne vorhanden ist, wird eine domäne erstellt, bevor das Objekt erstellt wird.

Der failIfExists -Parameter steuert das Verhalten der CreateObject -Methode, wenn ein Objekt des angegebenen Typs bereits in der Anwendung vorhanden ist. Wenn failIfExists ist true, löst die CreateObject -Methode eine Ausnahme aus InvalidOperationException .

Wenn failIfExists ist false, gibt die CreateObject -Methode das vorhandene registrierte Objekt des angegebenen Typs zurück.

Die CreateObject -Methode ruft die Überladung auf, die einen zusätzlichen throwOnError Parameter mit throwOnError festgelegt auf falseakzeptiert.

Gilt für:

CreateObject(String, Type, String, String, Boolean, Boolean)

Erstellt anhand des Typs oder virtuellen bzw. physischen Pfads ein Objekt für die angegebene Anwendungsdomäne, einen booleschen Wert, der das Verhalten bei Fehlern angibt, wenn bereits ein Objekt vom angegebenen Typ vorhanden ist, sowie einen booleschen Wert, der angibt, ob bei Hostinitialisierungsfehlern Ausnahmen ausgelöst werden.

public:
 System::Web::Hosting::IRegisteredObject ^ CreateObject(System::String ^ appId, Type ^ type, System::String ^ virtualPath, System::String ^ physicalPath, bool failIfExists, bool throwOnError);
public System.Web.Hosting.IRegisteredObject CreateObject (string appId, Type type, string virtualPath, string physicalPath, bool failIfExists, bool throwOnError);
member this.CreateObject : string * Type * string * string * bool * bool -> System.Web.Hosting.IRegisteredObject
Public Function CreateObject (appId As String, type As Type, virtualPath As String, physicalPath As String, failIfExists As Boolean, throwOnError As Boolean) As IRegisteredObject

Parameter

appId
String

Der eindeutige Bezeichner für die Anwendung, die das Objekt besitzt.

type
Type

Der Typ des zu erstellenden Objekts.

virtualPath
String

Der virtuelle Pfad zur Anwendung.

physicalPath
String

Der physische Pfad zur Anwendung.

failIfExists
Boolean

true, um eine Ausnahme auszulösen, wenn ein Objekt vom angegebenen Typ derzeit registriert ist, false, um das vorhandene registrierte Objekt vom angegebenen Typ zurückzugeben.

throwOnError
Boolean

true, um bei Hostinitialisierungsfehlern Ausnahmen auszulösen, false, um keine Ausnahmen bei Hostinitialisierungsfehlern auszulösen.

Gibt zurück

Ein neues Objekt vom angegebenen type.

Ausnahmen

physicalPath ist gleich null.

- oder -

physicalPath ist kein gültiger Anwendungspfad.

- oder -

Die IRegisteredObject-Schnittstelle wird von type nicht implementiert.

appID ist null.

- oder -

type ist null.

failIfExists ist true, und ein Objekt vom angegebenen Typ ist bereits registriert.

Hinweise

Diese Überladung der CreateObject Methode stellt den throwOnError Parameter bereit, mit dem Sie steuern können, ob Hostinitialisierungsausnahmen ausgelöst werden. Die Überladung der -Methode, die CreateObject nicht bereitstellt throwOnError , ruft diese Überladung auf, wobei der Parameter auf falsefestgelegt ist.

Gilt für: