ApplicationManager.CreateObject 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为指定的应用程序域和对象类型创建一个对象。
重载
CreateObject(IApplicationHost, Type) |
基于类型创建指定应用程序域的对象。 |
CreateObject(String, Type, String, String, Boolean) |
基于以下参数为指定的应用程序域创建一个对象:类型、虚拟路径和物理路径,以及一个指示当指定类型的对象已存在时的失败行为的布尔值。 |
CreateObject(String, Type, String, String, Boolean, Boolean) |
基于以下参数为指定的应用程序域创建一个对象:类型、虚拟路径和物理路径、一个指示当指定类型的对象已存在时的失败行为的布尔值,以及一个指示是否引发宿主初始化错误异常的布尔值。 |
CreateObject(IApplicationHost, Type)
基于类型创建指定应用程序域的对象。
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
参数
- appHost
- IApplicationHost
一个 IApplicationHost 对象。
- type
- Type
要创建的对象类型。
返回
type
中指定的类型的新对象。
例外
应用程序的物理路径不存在。
注解
CreateObject.NET Framework版本 3.5 中引入。 有关详细信息,请参见版本和依赖关系。
适用于
CreateObject(String, Type, String, String, Boolean)
基于以下参数为指定的应用程序域创建一个对象:类型、虚拟路径和物理路径,以及一个指示当指定类型的对象已存在时的失败行为的布尔值。
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
参数
- appId
- String
拥有该对象的应用程序的唯一标识符。
- type
- Type
要创建的对象类型。
- virtualPath
- String
应用程序的虚拟路径。
- physicalPath
- String
应用程序的物理路径。
- failIfExists
- Boolean
若为 true
则在指定类型的对象当前已注册的情况下引发一个异常;若为 false
则返回现有已注册的指定类型的对象。
返回
指定 type
的新对象。
例外
physicalPath
为 null
或 -
physicalPath
不是有效的应用程序路径。或 -
type
不实现 IRegisteredObject 接口。
failIfExists
为 true
,且已经注册指定类型的对象。
示例
下面的代码示例是已注册对象的对象工厂设计模式的实现。 使用工厂模式可以注册对象的多个实例。 该示例包含两个对象: SampleComponent
即应用程序将使用多个实例的对象,以及 SampleComponentFactory
管理实例列表 SampleComponent
的对象。
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
注解
该方法 CreateObject 用于在应用程序中创建和注册对象。 只能创建每种类型的一个对象。 如果需要创建同一类型的多个对象,则必须实现对象工厂。 有关详细信息,请参阅本主题中的代码示例。
每个应用程序由唯一的应用程序标识符标识,在其自己的应用程序域中运行。 该方法 CreateObject 在参数中指定的 appID
应用程序的应用程序域中创建指定类型的对象。 如果指定应用程序不存在应用程序域,则会在创建对象之前创建一个应用程序域。
参数 failIfExists
控制当应用程序中已存在指定类型的对象时的方法的行为 CreateObject 。 如果为 true
,failIfExists
该方法CreateObject将引发异常InvalidOperationException。
如果为 false
,failIfExists
该方法CreateObject返回指定类型的现有已注册对象。
该方法 CreateObject 调用重载,该重载采用另 throwOnError
一个参数,该 throwOnError
参数设置为 false
.
适用于
CreateObject(String, Type, String, String, Boolean, Boolean)
基于以下参数为指定的应用程序域创建一个对象:类型、虚拟路径和物理路径、一个指示当指定类型的对象已存在时的失败行为的布尔值,以及一个指示是否引发宿主初始化错误异常的布尔值。
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
参数
- appId
- String
拥有该对象的应用程序的唯一标识符。
- type
- Type
要创建的对象类型。
- virtualPath
- String
应用程序的虚拟路径。
- physicalPath
- String
应用程序的物理路径。
- failIfExists
- Boolean
若为 true
则在指定类型的对象当前已注册的情况下引发一个异常;若为 false
则返回现有已注册的指定类型的对象。
- throwOnError
- Boolean
若为 true
则引发宿主初始化错误异常;若为 false
则不引发宿主初始化异常。
返回
指定 type
的新对象。
例外
physicalPath
为 null
或 -
physicalPath
不是有效的应用程序路径。或 -
type
不实现 IRegisteredObject 接口。
failIfExists
为 true
,且已经注册指定类型的对象。
注解
此方法的 CreateObject 此重载提供 throwOnError
参数,用于控制是否引发托管初始化异常。 不提供throwOnError
此重载的方法的CreateObject重载,参数设置为 false
/