Partilhar via


Método IVsDataProvider.TryCreateObject<TSite> (Guid, Type, TSite)

Tentar criar uma instância de entidade especificada de suporte de DDEX para a fonte de dados especificada de DDEX que é implementada pelo provedor de DDEX localizado, com o objeto especificado do site.

Namespace:  Microsoft.VisualStudio.Data.Core
Assembly:  Microsoft.VisualStudio.Data.Core (em Microsoft.VisualStudio.Data.Core.dll)

Sintaxe

'Declaração
Function TryCreateObject(Of TSite) ( _
    source As Guid, _
    objType As Type, _
    site As TSite _
) As Object
Object TryCreateObject<TSite>(
    Guid source,
    Type objType,
    TSite site
)
generic<typename TSite>
Object^ TryCreateObject(
    Guid source, 
    Type^ objType, 
    TSite site
)
abstract TryCreateObject : 
        source:Guid * 
        objType:Type * 
        site:'TSite -> Object 
JScript não oferece suporte a tipos ou métodos genéricos.

Parâmetros de tipo

  • TSite
    O site.

Parâmetros

  • source
    Tipo: System.Guid
    Um identificador de fonte de dados de DDEX, ou Empty para nenhuma fonte de dados específica.
  • objType
    Tipo: System.Type
    Um tipo de entidade suporte de DDEX.
  • site
    Tipo: TSite
    Uma instância de um objeto que deve localizar a entidade novo suporte de DDEX.

Valor de retorno

Tipo: System.Object
Uma instância de entidade especificada de suporte de DDEX que é implementada pelo provedor de DDEX localizado, com o objeto especificado do site, se o provedor de DDEX o oferece suporte; caso contrário, nulluma referência nula (Nothing no Visual Basic).

Exceções

Exceção Condição
ArgumentNullException

o parâmetro de objType é nulluma referência nula (Nothing no Visual Basic).

[DataProviderException]

A instanciação de uma nova instância de entidade de suporte apresentou uma exceção, seja pela forma de uma chamada de CreateInstance através de reflexão ou através da implementação do método de CreateObject ou de CreateObject do provedor de DDEX, ou de criação de opção ou implementação de objeto de cliente (se houver) com falha.

Comentários

Esse método executa várias etapas para gerar uma instância do tipo de objeto especificado de suporte de DDEX.

Inspeção do Registro

Inicia o método inspecionando o Registro para obter informações sobre essa entidade de suporte.Parece sob a chave de SupportedObjects de provedor para uma chave do Registro que corresponde ao tipo de entidade de suporte.Se uma fonte de dados não vazio de DDEX foi passada no método, também procura uma subchave para a fonte de dados de DDEX.Se qualquer uma chave é encontrada, recupera o valor padrão da chave.Se o valor da chave énulluma referência nula (Nothing no Visual Basic) e não vazio, não assume que o valor para o nome do tipo de uma classe que implementa a entidade de suporte.Recupera informações aplicável em seguida, iniciando com um valor de A, e, se este é nulluma referência nula (Nothing no Visual Basic), um valor do assembly.O valor de A é o caminho totalmente qualificado de um assembly que contém o tipo registrado.O valor do assembly é o nome totalmente qualificado de um assembly que pode ser posicionado e carregado no common language runtime (CLR).

Se o objeto de suporte herda de interface base de IVsDataSupport , cujo único propósito é retornar um fluxo XML, o método procura os valores adicionais que podem descrever o local de um arquivo XML que pode ser passado para uma implementação base de entidade específica de suporte.Um exemplo seria a classe de DataObjectSupport que é definida para o assembly da estrutura de DDEX padrão.O método primeiro procura por um valor de XmlFile que pode ou não pode ser o nome totalmente qualificado de um arquivo XML no disco.Se esse valor existe, o método procura por um valor de XmlPath que pode conter o caminho de um valor não qualificado de XmlFile.Separação de caminho e nome de arquivo é importante quando você está colocando versões localizadas de um arquivo XML no mesmo local do caminho.Se nenhum valor de XmlFile existir, o método procura por um valor de XmlResource que identifica o nome de um recurso que contém XML em um assembly.Navegue em seguida informações aplicável, iniciando com um valor de XmlCodeBase, e, se este é nulluma referência nula (Nothing no Visual Basic), um valor de XmlAssembly.O valor de XmlCodeBase é o caminho totalmente qualificado de um assembly que contém o recurso especificado.O valor de XmlAssembly é o nome totalmente qualificado de um assembly que pode ser posicionado e carregados pelo CLR.

Se em esse momento que determina se não houver informações suficientes no Registro para criar uma instância de entidade suporte de DDEX, a etapa de inspeção do Registro é ignorada.Em esse caso, as fica do método de volta para uma implementação explícita de interface de IVsDataSourceSpecializer ou de IVsDataProviderObjectFactory , se é implementada pelo provedor de DDEX.Caso contrário, o método carrega o assembly apropriado com o codebase ou o nome completo (em essa ordem) e obtém o tipo do assembly.Se esse processo não encontrar um tipo apropriado, DataProviderException é lançada.

Finalmente, uma instância do tipo é criada.Se o objeto de suporte herda de interface base de IVsDataSupport e informações adicionais sobre um local do arquivo XML foi registrado pelo provedor, essa informação é passada como argumentos para o construtor do tipo.Essa informação é passada como o nome do arquivo XML e o caminho (duas cadeias de caracteres), ou como o nome do recurso XML e o objeto resolvido de Assembly (uma cadeia de caracteres e um objeto de Assembly ).Em esse caso, último DataProviderException é lançada se o assembly não pode ser carregado.Se qualquer outro erro ocorre quando a instância do tipo está sendo criada, ou o tipo criado não implementa o tipo de entidade esperado de suporte, DataProviderException é lançada.

Fonte Specializer de chamada ou factory do objeto do provedor

Quando a inspeção do Registro não encontrar informações suficientes para criar uma instância de entidade de suporte, o specializer de origem do provedor de DDEX (se houver) ou de factory do objeto método de CreateObject (para um provedor pacote) com base são chamados.Quando uma fonte de dados não vazio de DDEX é passada para este método, o specializer de origem do provedor (se houver) é chamado primeiro.Se este método gera NotImplementedException ou não retorna uma nova instância, chama o factory do objeto do provedor, se houver, também ignorando qualquer NotImplementedException que é lançada.Para quaisquer outros exceções, DataProviderException é lançada.

Crie a instância padrão

Se nenhum objeto foi criado por esse ponto, isso significa que o provedor de DDEX não implementa a entidade de suporte.Em o entanto, se o objeto de suporte define uma implementação padrão de objeto, uma instância do objeto padrão será criada.

ObservaçãoObservação

DDEX no Visual Studio 2005 não oferece suporte a implementação padrão de objeto, então nenhum objeto padrão será criado.

Situação de objeto

Todas as instâncias de trabalho de DDEX suportam as entidades que usam esse método podem ser localizadas com três objetos padrão do site.Esses objetos são: um objeto global de provedor de serviços, o objeto de IVsDataProvider que o criou, e o objeto de IVsDataSource que representa a fonte de dados específica de DDEX que foi criada para, se uma fonte de dados não vazio de DDEX foi fornecida.As instâncias são localizadas somente quando a instância recém-criado implementa a interface de IVsDataSiteableObject<T> com tipos genéricos IServiceProvider, IVsDataProvider, e/ou IVsDataSource, respectivamente.

Depois de esses objetos padrão do site, se um objeto personalizado do site é passado pelo chamador, a nova instância será localizado com o objeto personalizado quando implementa a interface de IVsDataSiteableObject<T> .

Criação do objeto cliente

A etapa final na criação de uma entidade suporte de DDEX envolve gerar um objeto invólucro de cliente se o objeto é definido com uma.Isso é feito principalmente verificando o tipo de entidade de suporte para uma instância de DataClientObjectAttribute.Se esta instância existe, uma instância do objeto identificado pela identificação de classe associado é criada e o novo objeto provedor é passado para este objeto de cliente.Após os objetos de cliente são criados, estão localizados com o mesmo conjunto de padrões e o site personalizado objetos que o objeto subjacente do provedor foi oferecidos.

Exemplos

O código a seguir demonstra como chamar esse método para criar uma das entidades padrão de suporte.

using System;
using Microsoft.VisualStudio.Data.Core;
using Microsoft.VisualStudio.Data.Services.SupportEntities;

public class DDEX_IVsDataProviderExample10
{
    public static IVsDataConnectionProperties CreateConnectionProperties(
        IVsDataProvider provider)
    {
        return provider.TryCreateObject<IVsDataConnectionProperties>();
    }
}

Segurança do .NET Framework

Consulte também

Referência

IVsDataProvider Interface

Sobrecargas TryCreateObject

Namespace Microsoft.VisualStudio.Data.Core