ApplicationManager.CreateObject Metod

Definition

Skapar ett objekt för den angivna programdomänen och objekttypen.

Överlagringar

Name Description
CreateObject(IApplicationHost, Type)

Skapar ett objekt för den angivna programdomänen baserat på typ.

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

Skapar ett objekt för den angivna programdomänen baserat på typ, virtuella och fysiska sökvägar och ett booleskt värde som anger felbeteende när ett objekt av den angivna typen redan finns.

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

Skapar ett objekt för den angivna programdomänen baserat på typ, virtuella och fysiska sökvägar, ett booleskt värde som indikerar felbeteende när ett objekt av den angivna typen redan finns och ett booleskt värde som anger om värdfelsfelfel genereras.

CreateObject(IApplicationHost, Type)

Skapar ett objekt för den angivna programdomänen baserat på 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

Parametrar

appHost
IApplicationHost

Ett IApplicationHost objekt.

type
Type

Typen av objekt som ska skapas.

Returer

Ett nytt objekt av den typ som anges i type.

Undantag

Det finns ingen fysisk sökväg för programmet.

appHost är null.

-eller-

type är null.

Kommentarer

CreateObject introduceras i .NET Framework version 3.5. Mer information finns i Versioner och beroenden.

Gäller för

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

Skapar ett objekt för den angivna programdomänen baserat på typ, virtuella och fysiska sökvägar och ett booleskt värde som anger felbeteende när ett objekt av den angivna typen redan finns.

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

Parametrar

appId
String

Den unika identifieraren för det program som äger objektet.

type
Type

Typen av objekt som ska skapas.

virtualPath
String

Den virtuella sökvägen till programmet.

physicalPath
String

Den fysiska sökvägen till programmet.

failIfExists
Boolean

true för att utlösa ett undantag om ett objekt av den angivna typen för närvarande är registrerat. false för att returnera det befintliga registrerade objektet av den angivna typen.

Returer

Ett nytt objekt i det angivna type.

Undantag

physicalPath är null

-eller-

physicalPath är inte en giltig programsökväg.

-eller-

type implementerar IRegisteredObject inte gränssnittet.

appID är null.

-eller-

type är null.

failIfExists är true och ett objekt av den angivna typen har redan registrerats.

Exempel

Följande kodexempel är en implementering av designmönstret object-factory för registrerade objekt. Med hjälp av fabriksmönstret kan du registrera flera instanser av ett objekt. Exemplet innehåller två objekt: SampleComponent, vilket är det objekt som programmet ska använda flera instanser av och SampleComponentFactory, som hanterar en lista över SampleComponent instanser.

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

Kommentarer

Metoden CreateObject används för att skapa och registrera objekt i programmet. Det går bara att skapa ett objekt av varje typ. Om du behöver skapa flera objekt av samma typ måste du implementera en objektfabrik. Mer information finns i kodexemplet i det här avsnittet.

Varje program, som identifieras av en unik programidentifierare, körs i sin egen programdomän. Metoden CreateObject skapar ett objekt av den angivna typen i programdomänen för programmet som anges i parametern appID . Om det inte finns någon programdomän för det angivna programmet skapas en innan objektet skapas.

Parametern failIfExists styr metodens CreateObject beteende när ett objekt av den angivna typen redan finns i programmet. När failIfExists är trueCreateObject genererar metoden ett InvalidOperationException undantag.

När failIfExists är falseCreateObject returnerar metoden det befintliga registrerade objektet av den angivna typen.

Metoden CreateObject anropar den överlagring som tar ytterligare throwOnError en parameter med throwOnError värdet false.

Gäller för

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

Skapar ett objekt för den angivna programdomänen baserat på typ, virtuella och fysiska sökvägar, ett booleskt värde som indikerar felbeteende när ett objekt av den angivna typen redan finns och ett booleskt värde som anger om värdfelsfelfel genereras.

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

Parametrar

appId
String

Den unika identifieraren för det program som äger objektet.

type
Type

Typen av objekt som ska skapas.

virtualPath
String

Den virtuella sökvägen till programmet.

physicalPath
String

Den fysiska sökvägen till programmet.

failIfExists
Boolean

true för att utlösa ett undantag om ett objekt av den angivna typen för närvarande är registrerat. false för att returnera det befintliga registrerade objektet av den angivna typen.

throwOnError
Boolean

true för att utlösa undantag för värdinitieringsfel; false för att inte utlösa värdinitieringsfel.

Returer

Ett nytt objekt i det angivna type.

Undantag

physicalPath är null

-eller-

physicalPath är inte en giltig programsökväg.

-eller-

type implementerar IRegisteredObject inte gränssnittet.

appID är null.

-eller-

type är null.

failIfExists är true och ett objekt av den angivna typen har redan registrerats.

Kommentarer

Den här överlagringen CreateObject av metoden ger parametern throwOnError som gör att du kan styra om värdinitieringsfel genereras. Överlagringen av metoden CreateObject som inte ger throwOnError anropar den här överlagringen med parametern inställd på false.

Gäller för