Compartir a través de


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

尝试为指定的创建 DDEX 支持实体的实例由 DDEX 提供程序实现指定的 DDEX 数据源,使用指定站点的网站对象。

Espacio de nombres:  Microsoft.VisualStudio.Data.Core
Ensamblado:  Microsoft.VisualStudio.Data.Core (en Microsoft.VisualStudio.Data.Core.dll)

Sintaxis

'Declaración
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 no admite el uso de métodos ni tipos genéricos.

Parámetros de tipo

  • TSite
    站点。

Parámetros

  • source
    Tipo: Guid

    一 DDEX 标识符或 Empty 数据源没有特定数据源。

  • objType
    Tipo: Type

    DDEX 支持实体的类型。

  • site
    Tipo: TSite

    应放置新的 DDEX 支持实体对象的实例。

Valor devuelto

Tipo: Object
由 DDEX 提供程序实现,网站用指定的网站对象指定的 DDEX 支持实体的实例,如果提供程序支持,DDEX 它;否则,返回 nullreferencia null (Nothing en Visual Basic)。

Excepciones

Excepción Condición
ArgumentNullException

objType 参数为 nullreferencia null (Nothing en Visual Basic)。

DataProviderException

支持实体的新实例化的实例引发了异常,因为调用 CreateInstance 的方法通过反射或通过 DDEX 提供程序的 CreateObjectCreateObject 不合格的默认或客户端对象的实现的某个方法实现或创建一个 (如果有)。

Comentarios

此方法执行指定的 DDEX 各步骤会支持实体类型的实例。

检查注册表

方法首先检查有关此支持实体的信息注册表。 它在提供程序的 SupportedObjects 键下搜索支持实体类型的注册表项。 如果非空 DDEX 数据源传递到方法,它还查找此 DDEX 数据源一个子项。 如果任何找到键,它检索键的默认值。 如果键值非nullreferencia null (Nothing en Visual Basic) 和非空,则它假定值是实现支持实体类的类型名称。 它从 CodeBase 值开头然后检索,限定信息,并且,如果,这是 nullreferencia null (Nothing en Visual Basic),程序集值。 CodeBase 值是包含注册类型的程序集的完全限定路径。 程序集值是可由公共语言运行时 (CLR) (CLR) 所找到并加载该程序集的完全限定名。

如果支持实体从基 IVsDataSupport 接口继承,唯一目的返回 XML 流,方法可以查找描述 XML 文件位置传递到特定支持实体的基本实现的其他值。 一个示例是在标准 DDEX 框架程序集中定义的 DataObjectSupport 类。 方法首先查找也可能不是一个 XML 文件完全限定名。磁盘上一 XmlFile 值。 如果该值存在,方法查找可能包含非限定性 XmlFile 值的路径对 XmlPath 值。 当在同一路径位置时,将 XML 文件的本地化版本的路径和文件名的分离很重要。 如果 XmlFile 值不存在,则方法查找标识资源名称程序集中包含 XML 的 XmlResource 值。 它从 XmlCodeBase 值开头然后再查找限定信息,并且,如果,这是 nullreferencia null (Nothing en Visual Basic),XmlAssembly 值。 值是包含 XmlCodeBase 指定的资源程序集的完全限定路径。 XmlAssembly 值是可由 CLR 找到并加载该程序集的完全限定名。

如果此时在确保没有创建的注册表中有足够的信息 DDEX 支持实体的实例,检查步骤跳过注册表。 在此情况下,向 IVsDataSourceSpecializerIVsDataProviderObjectFactory 接口的显式实现的方法中,如果通过 DDEX 提供程序实现。 否则,方法通过基本或完整名称加载相应的程序集中 (按该顺序应用) 并从程序集中获取类型。 如果此过程没有找到一个合适的类型,将引发 DataProviderException

最后,创建类型的实例。 如果支持实体从基 IVsDataSupport 接口继承,因此有关 XML 文件位置的附加信息。提供程序注册,此信息将传递作为参数提供类型构造函数。 此信息将作为 XML 文件名和路径 (两字符串),或作为 XML 资源和名称解析的 Assembly 对象 (如 String 和 Assembly 对象)。 在后一种情况下,程序集,则无法加载,将引发 DataProviderException。 如果其他错误,会发生类型创建实例时,创建或的类型未实现支持实体所需的类型,将引发 DataProviderException

调用源 Specializer 或提供程序对象工厂

当注册表检查未找到足够的信息来创建支持实体的实例时,DDEX 提供程序源 specializer (如果存在) 或者对象工厂 (对于基于的包提供程序) 调用 CreateObject 方法。 当非空 DDEX 数据源向此方法传递时,提供程序的源 specializer (如果存在) 先调用。 如果此方法会引发 NotImplementedException 或不返回的新实例,因此它调用引发的提供程序的工厂对象,因此,如果有),还忽略所有 NotImplementedException。 对于其他任何种类的异常,将引发 DataProviderException

创建默认实例

如果对象尚未被创建此点,这意味着 DDEX 提供程序没有实现支持实体。 但是,在中,如果支持实体定义了默认对象实现,默认将创建对象的实例。

Nota

在 Visual Studio 2005 中 DDEX 不支持默认对象实现,因此,默认不会创建对象。

对象放置

DDEX 所有新创建的实例支持使用此方法可以被放置一个标准的网站对象的实体。 这些对象是为:全局服务提供程序对象、为其创建 IVsDataProvider 对象和表示特定 DDEX 数据源的 IVsDataSource 对象在创建时,如果提供的非空 DDEX 数据源。 实例分别放置,在新创建的实例使用实现泛型类型 IServiceProvider、IVsDataProvider,和/或 IVsDataSource时的 IVsDataSiteableObject<T> 接口。

在这些标准的网站对象之后,如果,自定义站点对象由调用者传递新实例,将站点使用自定义对象,则实现 IVsDataSiteableObject<T> 接口。

创建 Customer 对象

在创建 DDEX 支持实体的最后一步是生成客户包装实体对象是否定义一个。 这是通过首先检查支持实体类型完成 DataClientObjectAttribute实例。 如果存在,此实例关联类 ID 标识的对象的实例创建,并新增的提供程序对象传递到该客户端对象。 在客户对象后,它们具有相同的站点组标准,并自定义网站对象的基础提供程序对象。

Ejemplos

下面的代码演示如何调用此方法创建一标准支持实体。

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>();
    }
}

Seguridad de .NET Framework

Vea también

Referencia

IVsDataProvider Interfaz

TryCreateObject (Sobrecarga)

Microsoft.VisualStudio.Data.Core (Espacio de nombres)