Metodo IVsDataProvider.TryCreateObject<TSite> (Guid, Type, TSite)
Tenta di creare un'istanza dell'entità specificata di supporto di DDEX per l'origine dati specificata di DDEX che viene implementata dal provider di DDEX, disponibile con l'oggetto specificato del sito.
Spazio dei nomi: Microsoft.VisualStudio.Data.Core
Assembly: Microsoft.VisualStudio.Data.Core (in Microsoft.VisualStudio.Data.Core.dll)
Sintassi
'Dichiarazione
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 non supporta i tipi o i metodi generici.
Parametri di tipo
- TSite
Il sito.
Parametri
source
Tipo: GuidUn identificatore di origine dati di DDEX, o Empty ad alcuna origine dati specifica.
objType
Tipo: TypeUn tipo di entità del supporto tecnico DDEX.
site
Tipo: TSiteUn'istanza di un oggetto che deve posizionare la nuova entità di supporto di DDEX.
Valore restituito
Tipo: Object
Un'istanza dell'entità specificata di supporto di DDEX che viene implementata dal provider di DDEX, trova all'oggetto specificato del sito, se il provider di DDEX è supportata; in caso contrario, nullriferimento null (Nothing in Visual Basic).
Eccezioni
Eccezione | Condizione |
---|---|
ArgumentNullException | Il parametro objType è nullriferimento null (Nothing in Visual Basic). |
DataProviderException | La creazione di un'istanza di una nuova istanza di supporto è stata generata un'eccezione, sia dalla modalità di una chiamata CreateInstance tramite reflection o tramite l'implementazione del metodo CreateObject o CreateObject del provider di DDEX, o la creazione dell'implementazione dell'oggetto client o di impostazione predefinita (se presente) ha esito negativo. |
Note
Questo metodo esegue le varie operazioni per creare un'istanza del tipo di entità specificato di supporto di DDEX.
Verifica del Registro Di Sistema
Il metodo è necessario innanzitutto verificare il Registro di sistema per informazioni su questa entità di supporto. Ricerca nella chiave di SupportedObjects provider per una chiave del Registro di sistema che corrisponde al tipo di entità di supporto. Se l'origine dati non vuota di DDEX si trasformasse il metodo, cerca anche una sottochiave per l'origine dati di DDEX. Se la chiave non esiste, recupera il valore predefinito della chiave. Se il valore della chiave ènullriferimento null (Nothing in Visual Basic) e non vuoto, non si suppone che il valore sia il nome del tipo di classe che implementa l'entità di supporto. Recuperare le informazioni complete, a partire da un valore di base e, se questo è nullriferimento null (Nothing in Visual Basic), un valore di assembly. Il valore di base è il percorso completo di un assembly contenente il tipo registrato. Il valore di assembly è il nome completo di un assembly che può essere posizionato e caricati da Common Language Runtime (CLR).
Se l'entità di supporto eredita dall'interfaccia di base IVsDataSupport, il cui obiettivo è specifico di restituire un flusso XML, il metodo trova i valori aggiuntivi che possono descrivere il percorso di un file XML che può essere passato a un'implementazione di base dell'entità specifica di supporto. Un esempio è la classe DataObjectSupport definita nell'assembly del framework standard DDEX. Il metodo cerca innanzitutto un valore di XmlFile che può essere il nome completo di un file XML su disco. Se questo valore è presente, il metodo cerca un valore di XmlPath contenente il percorso di un valore non qualificato di XmlFile. La separazione di percorso e nome file è importante quando si inserisce le versioni localizzate di un file XML nella stessa posizione del percorso. Se nessun valore di XmlFile esiste, il metodo cerca un valore di XmlResource che identifica il nome di una risorsa che contiene codice XML in un assembly. Quindi quindi trovare le informazioni complete, a partire da un valore di XmlCodeBase e, se questo è nullriferimento null (Nothing in Visual Basic), un valore di XmlAssembly. Il valore di XmlCodeBase è il percorso completo di un assembly contenente la risorsa specificata. Il valore di XmlAssembly è il nome completo di un assembly che può essere posizionato e caricato da CLR.
Se in questa fase viene determinato che non sono sufficienti informazioni nel Registro di sistema per creare un'istanza del supporto tecnico DDEX, il passaggio di ispezione del Registro di sistema viene ignorato. In questo caso, le cadute di metodo a un'implementazione esplicita dell'interfaccia IVsDataProviderObjectFactory o IVsDataSourceSpecializer, se viene implementata dal provider di DDEX. In caso contrario, il metodo carica l'assembly appropriato alla codebase o il nome completo (in quest'ordine) e ottiene il tipo dall'assembly. Se questo processo non trova un tipo corretto, viene generato DataProviderException.
Infine, un'istanza del tipo viene creata. Se l'entità di supporto eredita dall'interfaccia di base IVsDataSupport e informazioni aggiuntive su una posizione del file XML sono registrate dal provider, tali informazioni vengono passate come argomenti al costruttore del tipo. Queste informazioni vengono passate come nome file XML e il percorso (due stringhe, o come nome della risorsa XML e l'oggetto risolto Assembly (una stringa e un oggetto Assembly ). Nel secondo caso, viene generato DataProviderException se l'assembly non può essere caricata. Se qualsiasi altro errore si verifica quando l'istanza di tipo viene creata, o il tipo creato non implementa il tipo di entità previsto di supporto, viene generato DataProviderException.
Chiamata factory dell'oggetto o provider di Specializer
Durante l'esame del Registro di sistema non è in grado di reperire informazioni sufficienti per creare un'istanza dell'entità di supporto, lo specializer di origine del provider di DDEX (se presente) o metodo CreateObject factory dell'oggetto (per un provider basato su pacchetti) viene chiamato. Quando un'origine dati non vuota di DDEX viene passata al metodo, lo specializer di origine del provider (se presente) viene chiamato per primo. Se questo metodo genera NotImplementedException o non restituisce nuova istanza, chiama la factory dell'oggetto del provider, se presente, anche senza qualsiasi NotImplementedException generata. Per tutte le altre eccezioni, viene generato DataProviderException.
Creare l'istanza predefinita
Se nessun oggetto è stato creato da questo punto, il provider di DDEX non implementa l'entità di supporto. Tuttavia, se l'entità di supporto viene definita un'implementazione predefinita dell'oggetto, un'istanza dell'oggetto predefinito verrà creata.
Nota
DDEX in Visual Studio 2005 non supporta l'implementazione predefinita dell'oggetto, pertanto alcun oggetto predefinito verrà creato.
Percorso dell'oggetto
Tutte le istanze appena DDEX supportano le entità che utilizzano questo metodo può essere collocate con tre oggetti standard del sito. Questi oggetti sono le seguenti: un oggetto provider di servizi globale, l'oggetto IVsDataProvider che ha creato e IVsDataSource che rappresenta l'origine dati specifica di DDEX creata per, se l'origine dati non vuota di DDEX è stata fornita. Le istanze vengono collocate rispettivamente solo quando l'istanza appena implementa l'interfaccia IVsDataSiteableObject<T> con i tipi generici IServiceProvider, IVsDataProvider e/o IVsDataSource.
A seguito di questi oggetti standard del sito, se un oggetto personalizzato del sito viene passato dal chiamante, la nuova istanza verrà posizionato all'oggetto personalizzato quando si implementa l'interfaccia IVsDataSiteableObject<T>.
Creazione di oggetti client
La fase finale di creare un'entità di supporto di DDEX include produrre un oggetto client wrapper se l'entità è definita con una. Ciò è necessario innanzitutto verificato il tipo di entità di supporto per un'istanza DataClientObjectAttribute. Se questa istanza esiste, un'istanza dell'oggetto identificato dall'ID della classe collegato viene creata e il provider nuovo oggetto viene passato a questo oggetto client. Dopo che gli oggetti client vengono creati, vengono collocati con lo stesso insieme di standard e il sito personalizzato oggetti che l'oggetto provider sottostante è stato fornito.
Esempi
Il codice seguente viene illustrato come chiamare questo metodo per creare una delle entità standard di supporto.
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>();
}
}
Sicurezza di .NET Framework
- Attendibilità totale per il chiamante immediato. Impossibile utilizzare questo membro in codice parzialmente attendibile. Per altre informazioni, vedere Utilizzo di librerie da codice parzialmente attendibile.