IVsDataProvider.TryCreateObject<TSite> (Método) (Guid, Type, TSite)
Intenta crear una instancia de la entidad especificada de soporte de DDEX para el origen de datos especificado de DDEX implementada por el proveedor de DDEX, localizada con el objeto especificado del sitio.
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
El sitio.
Parámetros
- source
Tipo: System.Guid
Un identificador de origen de datos de DDEX, o Empty para ningún origen de datos específico.
- objType
Tipo: System.Type
Un tipo de entidad de soporte de DDEX.
- site
Tipo: TSite
Una instancia de un objeto que debe localizar la nueva entidad de soporte de DDEX.
Valor devuelto
Tipo: System.Object
Una instancia de la entidad especificada de soporte de DDEX implementada por el proveedor de DDEX, situado al objeto especificado de sitio, si el proveedor de DDEX lo admite; si no, nullreferencia null (Nothing en Visual Basic).
Excepciones
Excepción | Condición |
---|---|
ArgumentNullException | El valor del parámetro objType es nullreferencia null (Nothing en Visual Basic). |
[DataProviderException] | La creación de una nueva instancia de la entidad admiten produjo una excepción, por medio de una llamada de CreateInstance mediante reflexión o con la implementación del método de CreateObject o de CreateObject de proveedor de DDEX, o creación de implementación predeterminado o de objetos cliente (si hay) no. |
Comentarios
Este método realiza pasos diferentes para generar una instancia de tipo de entidad especificado de soporte de DDEX.
Examinar el registro
El método inicia inspeccionando el registro para obtener información sobre esta entidad admiten.Busca en la clave de SupportedObjects de proveedor para una clave del Registro que coincide con el tipo de entidad admiten.Si un origen de datos no vacío de DDEX se pasó al método, también busca una subclave para este origen de datos de DDEX.Si se encuentra una clave, recupera el valor predeterminado de la clave.Si el valor de la clave esnullreferencia null (Nothing en Visual Basic) y no vacío no, asume el valor sea el nombre de tipo de una clase que implemente la entidad admiten.Recupera la información necesaria, empezando por un valor de código base, y, si es nullreferencia null (Nothing en Visual Basic), un valor del ensamblado.El valor de código base es la ruta de acceso completa de un ensamblado que contiene el tipo registrado.El valor del ensamblado es el nombre completo de un ensamblado que pueda estar situado y cargar Common Language Runtime (CLR).
Si la entidad admiten hereda de la interfaz base de IVsDataSupport , cuyo único propósito es devolver una secuencia de XML, el método busca los valores adicionales que pueden describir la ubicación de un archivo XML que se puede pasar a una implementación base de entidad admiten concreta.Un ejemplo sería la clase de DataObjectSupport que se define en el ensamblado de .NET framework estándar de DDEX.El método busca primero un valor de XmlFile que puede o no puede ser el nombre completo de un archivo XML en el disco.Si existe este valor, el método busca un valor de XmlPath que puede contener la ruta de un valor incompleta de XmlFile.La separación de ruta y de nombre de archivo es importante al configurar versiones localizadas de un archivo XML en la misma ubicación de la ruta.Si no existe ningún valor de XmlFile, el método busca un valor de XmlResource que identifica el nombre de un recurso que contiene código XML en un ensamblado.A continuación busca la información necesaria, empezando por un valor de XmlCodeBase, y, si es nullreferencia null (Nothing en Visual Basic), un valor de XmlAssembly.El valor de XmlCodeBase es la ruta de acceso completa de un ensamblado que contenga el recurso especificado.El valor de XmlAssembly es el nombre completo de un ensamblado que pueda estar situado y cargar por CLR.
Si en este punto se determina que no hay información suficiente del registro para crear una instancia de la entidad de compatibilidad de DDEX, se omite el paso de examen del registro.En este caso, las caídas de método a una implementación de interfaz explícita de IVsDataSourceSpecializer o de IVsDataProviderObjectFactory , si es implementada por el proveedor de DDEX.Si no, el método carga el ensamblado adecuado con codebase o nombre completo (en ese orden) y obtiene el tipo de ensamblado.Si este proceso no encuentra un tipo adecuado, se produce DataProviderException .
Por último, una instancia del tipo se crea.Si la entidad admiten hereda de la interfaz base de IVsDataSupport e información adicional sobre una ubicación del archivo XML se ha registrada por el proveedor, esta información se pasa como argumento al constructor del tipo.Esta información se pasa como el nombre de archivo y la ruta (dos cadenas) XML, o como el nombre del recurso y el objeto resuelto de Assembly (una cadena y un objeto XML de Assembly ).En este último caso, se produce DataProviderException si el ensamblado no se puede cargar.Si cualquier otro error aparece cuando se crea la instancia del tipo, o el tipo creado no implementa el tipo de entidad admiten esperado, se produce DataProviderException .
Origen Specializer call o generador del objeto de proveedor
Al examinar el registro no encuentra bastante información para crear una instancia de entidad admiten, se llama al specializer de origen del proveedor de DDEX (si existe) o método de CreateObject de generador de objeto (para un proveedor paquete- basado).Cuando un origen de datos no vacío de DDEX se pasa a este método, el specializer de origen de proveedor (si existe) se llama primero.Si este método produce NotImplementedException o no devuelve ninguna nueva instancia, llama al generador del proveedor, si la hay, también omitiendo la NotImplementedException que se produce.Para todas las demás excepciones, se produce DataProviderException .
Cree la instancia predeterminada
Si no se ha creado ningún objeto por este punto, esto significa que el proveedor de DDEX no implementa la entidad admiten.Sin embargo, si la entidad admiten define una implementación predeterminada del objeto, una instancia del objeto predeterminado se creará.
[!NOTA]
DDEX en Visual Studio 2005 no admite la implementación predeterminada del objeto, por lo que no se creará ningún objeto predeterminado.
Localización de objeto
Todas las instancias recién creadas de DDEX admiten las entidades que utilizan este método pueden localizarse con tres objetos estándar del sitio.Estos objetos son los siguientes: un objeto global del proveedor de servicios, el objeto de IVsDataProvider que lo creó, y el objeto de IVsDataSource que representa el origen de datos específico de DDEX creado para, si un origen de datos no vacío de DDEX se ha proporcionado.Las instancias se encuentran sólo cuando la instancia creada recientemente implementa la interfaz de IVsDataSiteableObject<T> con tipos genéricos IServiceProvider, IVsDataProvider, o IVsDataSource, respectivamente.
Después de estos objetos estándar de sitio, si un objeto personalizado de sitio es pasado por el llamador, la nueva instancia se ubicará con el objeto personalizado cuando implementa la interfaz de IVsDataSiteableObject<T> .
Creación de objetos cliente
El paso final de crear una entidad de soporte de DDEX implica la generación de un objeto contenedor de cliente si se define la entidad con una.Esto se hace primero inspeccionando el tipo de entidad de soporte para una instancia de DataClientObjectAttribute.Si existe esta instancia, una instancia del objeto identificado por el id. de clase asociado se crea y el nuevo objeto de proveedor se pasa a este objeto de cliente.Una vez creados los objetos cliente, se encuentran con el mismo conjunto de estándar y el sitio personalizado se opone que el objeto de proveedor subyacente se ha proporcionado.
Ejemplos
El código siguiente se muestra cómo llamar a este método para crear una de las entidades admiten estándar.
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
- Plena confianza para el llamador inmediato. Un código de confianza parcial no puede utilizar este miembro. Para obtener más información, vea Utilizar bibliotecas de código que no es de plena confianza.