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: Guid

    Um identificador de fonte de dados de DDEX, ou Empty para nenhuma fonte de dados específica.

  • objType
    Tipo: Type

    Um tipo de entidade suporte de DDEX.

  • site
    Tipo: TSite

    Uma instância de um objeto que deve localizar a nova entidade de suporte de DDEX.

Valor de retorno

Tipo: 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 suporte; caso contrário, nulluma referência nula (Nothing no Visual Basic).

Exceções

Exceção Condição
ArgumentNullException

O parâmetro 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 um chamada de CreateInstance com a 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 entidade 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. Ele 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 para uma subchave para a fonte de dados de DDEX. Se qualquer chave é encontrada, recupera o valor padrão de 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. Então recuperar informações aplicável, 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 carregados pelo 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 procurar 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 no assembly da estrutura do padrão DDEX. 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 procurar um valor de XmlPath que pode conter o caminho de um valor não qualificado de XmlFile. A 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 procurar um valor de XmlResource que identifica o nome de um recurso que contém XML em um assembly. Em procurar em 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 por CLR.

Se nesse 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. Nesse 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 (nessa 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 de 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 ). Nesse último caso, 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 da 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 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 gerencie NotImplementedException ou não retorna uma nova instância, chama o factory do objeto provedor, se houver, também ignorar qualquer NotImplementedException que é lançada. Para todas exceções outros, 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. No entanto, se o objeto de suporte define uma implementação padrão de objeto, uma instância do objeto padrão será criada.

Dica

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 DDEX de 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 desses 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 de cliente

A etapa final na criação de uma entidade de suporte de DDEX envolve gerar um objeto envoltório de cliente se o objeto é definido com uma. Isso é feito principalmente inspecionando 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 oferecido.

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