ApplicationManager.CreateObject 方法

定义

为指定的应用程序域和对象类型创建一个对象。

重载

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

要创建的对象类型。

返回

IRegisteredObject

type 中指定的类型的新对象。

例外

应用程序的物理路径不存在。

appHostnull

  • 或 - typenull

注解

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 则返回现有已注册的指定类型的对象。

返回

IRegisteredObject

指定 type 的新对象。

例外

physicalPathnull

  • 或 - physicalPath 不是有效的应用程序路径。

  • 或 - type 不实现 IRegisteredObject 接口。

appIDnull

  • 或 - typenull

failIfExiststrue,且已经注册指定类型的对象。

示例

下面的代码示例是已注册对象的对象工厂设计模式的实现。 使用工厂模式可以注册对象的多个实例。 该示例包含两个对象: 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 。 如果为 truefailIfExists该方法CreateObject将引发异常InvalidOperationException

如果为 falsefailIfExists该方法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 则不引发宿主初始化异常。

返回

IRegisteredObject

指定 type 的新对象。

例外

physicalPathnull

  • 或 - physicalPath 不是有效的应用程序路径。

  • 或 - type 不实现 IRegisteredObject 接口。

appIDnull

  • 或 - typenull

failIfExiststrue,且已经注册指定类型的对象。

注解

此方法的 CreateObject 此重载提供 throwOnError 参数,用于控制是否引发托管初始化异常。 不提供throwOnError此重载的方法的CreateObject重载,参数设置为 false /

适用于