ApplicationManager.CreateObject Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vytvoří objekt pro zadanou doménu aplikace a typ objektu.
Přetížení
CreateObject(IApplicationHost, Type) |
Vytvoří objekt pro zadanou doménu aplikace na základě typu. |
CreateObject(String, Type, String, String, Boolean) |
Vytvoří objekt pro zadanou doménu aplikace na základě typu, virtuálních a fyzických cest a logické hodnoty označující chování selhání, pokud objekt zadaného typu již existuje. |
CreateObject(String, Type, String, String, Boolean, Boolean) |
Vytvoří objekt pro zadanou doménu aplikace na základě typu, virtuálních a fyzických cest, logické hodnoty označující chování selhání, pokud objekt zadaného typu již existuje, a logická hodnota označující, jestli se vyvolá výjimky chyby inicializace hostování. |
CreateObject(IApplicationHost, Type)
Vytvoří objekt pro zadanou doménu aplikace na základě typu.
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
Parametry
- appHost
- IApplicationHost
Objekt IApplicationHost.
- type
- Type
Typ objektu k vytvoření.
Návraty
Nový objekt typu zadaného v type
.
Výjimky
Fyzická cesta pro aplikaci neexistuje.
Poznámky
CreateObjectje zaveden v .NET Framework verze 3.5. Další informace najdete v tématu Verze a závislosti.
Platí pro
CreateObject(String, Type, String, String, Boolean)
Vytvoří objekt pro zadanou doménu aplikace na základě typu, virtuálních a fyzických cest a logické hodnoty označující chování selhání, pokud objekt zadaného typu již existuje.
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
Parametry
- appId
- String
Jedinečný identifikátor aplikace, která objekt vlastní.
- type
- Type
Typ objektu k vytvoření.
- virtualPath
- String
Virtuální cesta k aplikaci.
- physicalPath
- String
Fyzická cesta k aplikaci.
- failIfExists
- Boolean
true
vyvolání výjimky, pokud je objekt zadaného typu aktuálně registrován; false
chcete-li vrátit existující registrovaný objekt zadaného typu.
Návraty
Nový objekt zadaného type
objektu .
Výjimky
physicalPath
je null
-nebo-
physicalPath
není platná cesta aplikace.
-nebo-
type
neimplementuje IRegisteredObject rozhraní.
failIfExists
je true
a objekt zadaného typu je již zaregistrován.
Příklady
Následující příklad kódu je implementace vzoru návrhu objekt-továrna pro registrované objekty. Pomocí vzoru továrny můžete zaregistrovat více instancí objektu. Příklad obsahuje dva objekty: SampleComponent
což je objekt, který aplikace bude používat více instancí a SampleComponentFactory
která spravuje seznam SampleComponent
instancí.
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
Poznámky
Metoda CreateObject slouží k vytvoření a registraci objektů v aplikaci. Lze vytvořit pouze jeden objekt každého typu. Pokud potřebujete vytvořit více objektů stejného typu, musíte implementovat objekt pro vytváření objektů. Další informace najdete v příkladu kódu v tomto tématu.
Každá aplikace identifikovaná jedinečným identifikátorem aplikace běží ve vlastní doméně aplikace. Metoda CreateObject vytvoří objekt zadaného typu v doméně aplikace aplikace zadané v parametru appID
. Pokud doména aplikace pro zadanou aplikaci neexistuje, vytvoří se před vytvořením objektu.
Parametr failIfExists
řídí chování metody, pokud objekt zadaného CreateObject typu již v aplikaci existuje. Když failIfExists
je true
, CreateObject metoda vyvolá InvalidOperationException výjimku.
Když failIfExists
je false
, CreateObject metoda vrátí existující registrovaný objekt zadaného typu.
Metoda CreateObject volá přetížení, které přebírá další throwOnError
parametr s throwOnError
nastavenou na false
.
Platí pro
CreateObject(String, Type, String, String, Boolean, Boolean)
Vytvoří objekt pro zadanou doménu aplikace na základě typu, virtuálních a fyzických cest, logické hodnoty označující chování selhání, pokud objekt zadaného typu již existuje, a logická hodnota označující, jestli se vyvolá výjimky chyby inicializace hostování.
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
Parametry
- appId
- String
Jedinečný identifikátor aplikace, která objekt vlastní.
- type
- Type
Typ objektu k vytvoření.
- virtualPath
- String
Virtuální cesta k aplikaci.
- physicalPath
- String
Fyzická cesta k aplikaci.
- failIfExists
- Boolean
true
vyvolání výjimky, pokud je objekt zadaného typu aktuálně registrován; false
chcete-li vrátit existující registrovaný objekt zadaného typu.
- throwOnError
- Boolean
true
vyvolání výjimek pro chyby inicializace hostování; false
nevyvolá výjimky inicializace hostování.
Návraty
Nový objekt zadaného type
objektu .
Výjimky
physicalPath
je null
-nebo-
physicalPath
není platná cesta aplikace.
-nebo-
type
neimplementuje IRegisteredObject rozhraní.
failIfExists
je true
a objekt zadaného typu je již zaregistrován.
Poznámky
Toto přetížení CreateObject metody poskytuje throwOnError
parametr, který umožňuje řídit, zda jsou vyvoláné výjimky inicializace hostování. Přetížení CreateObject metody, která neposkytuje throwOnError
volání tohoto přetížení s parametrem nastaveným na false
.