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

Тип создаваемого объекта.

Возвращаемое значение

Новый объект типа, указанного в type.

Исключения

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

appHost равно null.

–или–

type равно null.

Комментарии

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 интерфейс.

appID равно null.

–или–

type равно null.

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

Возвращаемое значение

Новый объект указанного typeобъекта.

Исключения

physicalPath равен null

–или–

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

–или–

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

appID равно null.

–или–

type равно null.

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

Комментарии

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

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