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.

Исключения

Физический путь для приложения не существует.

appHost имеет значение null.

-или- type имеет значение null.

Комментарии

CreateObjectпредставлен в платформа .NET Framework версии 3.5. Дополнительные сведения см. в статье Версии и зависимости платформы .NET Framework.

Применяется к

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.

Исключения

physicalPath равно null

-или- physicalPath — недопустимый путь к приложению.

-или- type не реализует интерфейс IRegisteredObject .

appID имеет значение null.

-или- type имеет значение null.

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 метода, если объект указанного типа уже существует в приложении. В противном случае failIfExists trueCreateObject метод создает InvalidOperationException исключение.

В этом failIfExists falseCreateObject случае метод возвращает существующий зарегистрированный объект указанного типа.

Метод 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.

Исключения

physicalPath равно null

-или- physicalPath — недопустимый путь к приложению.

-или- type не реализует интерфейс IRegisteredObject .

appID имеет значение null.

-или- type имеет значение null.

failIfExists имеет значение true, и объект указанного типа уже зарегистрирован.

Комментарии

Эта перегрузка CreateObject метода предоставляет throwOnError параметр, который позволяет управлять тем, создаются ли исключения инициализации размещения. Перегрузка CreateObject метода, который не предоставляет throwOnError вызовы этой перегрузки с заданным параметром false.

Применяется к