ApplicationManager.CreateObject Método

Definição

Cria um objeto para o domínio de aplicação e tipo de objeto especificados.

Sobrecargas

Name Description
CreateObject(IApplicationHost, Type)

Cria um objeto para o domínio de aplicação especificado, com base no tipo.

CreateObject(String, Type, String, String, Boolean)

Cria um objeto para o domínio de aplicação especificado com base no tipo, caminhos virtuais e físicos, e um valor Booleano que indica comportamento de falha quando um objeto do tipo especificado já existe.

CreateObject(String, Type, String, String, Boolean, Boolean)

Cria um objeto para o domínio de aplicação especificado com base no tipo, caminhos virtuais e físicos, um valor Booleano que indica comportamento de falha quando um objeto do tipo especificado já existe, e um valor Booleano que indica se há exceções de erro de inicialização de alojamento lançadas.

CreateObject(IApplicationHost, Type)

Cria um objeto para o domínio de aplicação especificado, com base no tipo.

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

Parâmetros

appHost
IApplicationHost

Um IApplicationHost objeto.

type
Type

O tipo de objeto a criar.

Devoluções

Um novo objeto do tipo especificado em type.

Exceções

Não existe um caminho físico para a aplicação.

appHost é null.

-ou-

type é null.

Observações

CreateObject é introduzido na versão 3.5 do .NET Framework. Para mais informações, consulte Versões e Dependências.

Aplica-se a

CreateObject(String, Type, String, String, Boolean)

Cria um objeto para o domínio de aplicação especificado com base no tipo, caminhos virtuais e físicos, e um valor Booleano que indica comportamento de falha quando um objeto do tipo especificado já existe.

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

Parâmetros

appId
String

O identificador único da aplicação que detém o objeto.

type
Type

O tipo de objeto a criar.

virtualPath
String

O caminho virtual para a aplicação.

physicalPath
String

O caminho físico até à aplicação.

failIfExists
Boolean

true lançar uma exceção se um objeto do tipo especificado estiver atualmente registado; false para devolver o objeto registado existente do tipo especificado.

Devoluções

Um novo objeto do especificado type.

Exceções

physicalPath é null

-ou-

physicalPath não é um caminho de aplicação válido.

-ou-

type não implementa a IRegisteredObject interface.

appID é null.

-ou-

type é null.

failIfExists é true e um objeto do tipo especificado já está registado.

Exemplos

O seguinte exemplo de código é uma implementação do padrão de design objeto-fábrica para objetos registados. Usar o padrão de fábrica permite-lhe registar múltiplas instâncias de um objeto. O exemplo contém dois objetos: SampleComponent, que é o objeto do qual a aplicação usará múltiplas instâncias, e SampleComponentFactory, que gere uma lista de SampleComponent instâncias.

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

Observações

O CreateObject método é usado para criar e registar objetos na aplicação. Apenas um objeto de cada tipo pode ser criado. Se precisares de criar múltiplos objetos do mesmo tipo, tens de implementar uma fábrica de objetos. Para mais informações, veja o exemplo de código neste tópico.

Cada aplicação, identificada por um identificador único, corre no seu próprio domínio de aplicação. O CreateObject método cria um objeto do tipo especificado no domínio de aplicação da aplicação especificado no appID parâmetro. Se não existir um domínio de aplicação para a aplicação especificada, um é criado antes de o objeto ser criado.

O failIfExists parâmetro controla o comportamento do CreateObject método quando um objeto do tipo especificado já existe na aplicação. Quando failIfExists é , o CreateObject método lança uma InvalidOperationException exceçãotrue.

Quando failIfExists é false, o CreateObject método devolve o objeto registado existente do tipo especificado.

O CreateObject método chama a sobrecarga que recebe um parâmetro adicional throwOnError com throwOnError definido em false.

Aplica-se a

CreateObject(String, Type, String, String, Boolean, Boolean)

Cria um objeto para o domínio de aplicação especificado com base no tipo, caminhos virtuais e físicos, um valor Booleano que indica comportamento de falha quando um objeto do tipo especificado já existe, e um valor Booleano que indica se há exceções de erro de inicialização de alojamento lançadas.

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

Parâmetros

appId
String

O identificador único da aplicação que detém o objeto.

type
Type

O tipo de objeto a criar.

virtualPath
String

O caminho virtual para a aplicação.

physicalPath
String

O caminho físico até à aplicação.

failIfExists
Boolean

true lançar uma exceção se um objeto do tipo especificado estiver atualmente registado; false para devolver o objeto registado existente do tipo especificado.

throwOnError
Boolean

true lançar exceções por erros de inicialização de alojamento; false para não lançar exceções de inicialização de alojamento.

Devoluções

Um novo objeto do especificado type.

Exceções

physicalPath é null

-ou-

physicalPath não é um caminho de aplicação válido.

-ou-

type não implementa a IRegisteredObject interface.

appID é null.

-ou-

type é null.

failIfExists é true e um objeto do tipo especificado já está registado.

Observações

Esta sobrecarga do CreateObject método fornece o throwOnError parâmetro que permite controlar se as exceções de inicialização do alojamento são lançadas. A sobrecarga do CreateObject método que não fornece throwOnError chama a esta sobrecarga com o parâmetro definido em false.

Aplica-se a