IVsDataProvider.TryCreateObject<TSite>-Methode (Guid, Type, TSite)
Versucht, eine Instanz der angegebenen DDEX-Unterstützungsentität für die angegebene DDEX-Datenquelle zu erstellen, die vom DDEX-Anbieter implementiert wird, positioniert mit dem angegebenen Site-Objekt.
Namespace: Microsoft.VisualStudio.Data.Core
Assembly: Microsoft.VisualStudio.Data.Core (in Microsoft.VisualStudio.Data.Core.dll)
Syntax
'Declaration
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 unterstützt keine generischen Typen oder Methoden.
Typparameter
- TSite
Die Site-ID.
Parameter
source
Typ: GuidEin DDEX-Datenquellenbezeichner oder Empty für eine bestimmte Datenquelle.
objType
Typ: TypeEin Typ DDEX-Unterstützungsentität.
site
Typ: TSiteEine Instanz eines Objekts, das die neue DDEX-Unterstützungsentität positionieren soll.
Rückgabewert
Typ: Object
Eine Instanz der angegebenen DDEX-Unterstützungsentität, die vom DDEX-Anbieter implementiert wird, positioniert mit dem angegebenen Site-Objekt, wenn der DDEX-Anbieter es unterstützt; andernfalls nullein Nullverweis (Nothing in Visual Basic).
Ausnahmen
Ausnahme | Bedingung |
---|---|
ArgumentNullException | Der objType-Parameter ist nullein Nullverweis (Nothing in Visual Basic). |
DataProviderException | Instanziierung einer neuen Instanz der Unterstützungsentität hat eine Ausnahme, ob über CreateInstance einen Aufruf durch Reflektion oder von der des DDEX- CreateObject oder CreateObject-Methodenimplementierung Anbieters ausgewählt, oder Erstellung standardmäßiger oder der Clientobjektimplementierung (falls vorhanden), fehlschlagen. |
Hinweise
Diese Methode führt verschiedene Schritte aus, um eine Instanz des angegebenen DDEX-Unterstützungsentitätstyps zu erzeugen.
Registrierungs-Überprüfung
Die Methode beginnt durch Überprüfen der Registrierung Informationen zu diesen Unterstützungsentität. Sie wird unter der SupportedObjects-Taste des Anbieters nach einem Registrierungsschlüssel, der den Unterstützungsentitätstyp übereinstimmt. Wenn eine nicht leere DDEX-Datenquelle an die Methode übergeben wurde, sucht er auch nach einen Unterschlüssel für diese DDEX-Datenquelle. Wenn jeder Schlüssel gefunden wird, ruft sie den Standardwert der Schlüssel ab. Wenn der Wert der Schlüssel als nullein Nullverweis (Nothing in Visual Basic) und nicht leer ist, wird der Wert an, mit dem der Name einer Klasse, die die Unterstützungsentität implementiert. Anschließend wird qualifizierende Informationen, die mit einem CodeBase-Wert und, wenn dieses nullein Nullverweis (Nothing in Visual Basic)-, ein Assemblywert ab. Der CodeBase-Wert ist der vollqualifizierte Pfad einer Assembly, die registrierten Typ enthält. Der Assemblywert ist der vollqualifizierte Name einer Assembly, die von der Common Language Runtime (CLR) veranschaulicht werden und geladen werden kann.
Wenn die Unterstützungsentität von der Basisklasse IVsDataSupport-Schnittstelle erbt, deren einziger Zweck, einen Stream aus XML zurückzugeben ist, durchsucht die Methode nach Mehrwerten, die möglicherweise den Speicherort einer XML-Datei beschreiben, die einer Basisimplementierung der bestimmten Unterstützungsentität übergeben werden kann. Ein Beispiel würde die DataObjectSupport-Klasse sein, die in der standardmäßigen DDEX Frameworkassembly definiert wird. Die Methode durchsucht zuerst nach einem XmlFile-Wert, der der vollqualifizierte Name einer XML-Datei auf dem Datenträger möglicherweise ist. Wenn dieser Wert vorhanden ist, durchsucht die Methode nach einem XmlPath-Wert, die möglicherweise den Pfad eines nicht qualifizierten XmlFile-Werts enthält. Die Trennung des Pfads und des Dateinamens ist wichtig, wenn Sie lokalisierte Versionen einer XML-Datei am gleichen Speicherort darstellt einfügen. Wenn kein XmlFile-Wert vorhanden ist, durchsucht die Methode nach einem XmlResource-Wert, der den Namen einer Ressource identifiziert, die XML in einer Assembly enthält. Sie dann sucht dann nach kennzeichnenden Informationen, die mit einem XmlCodeBase-Wert und, wenn dieser nullein Nullverweis (Nothing in Visual Basic) ist, ein XmlAssembly-Wert. Der XmlCodeBase-Wert ist der vollqualifizierte Pfad einer Assembly, die die angegebene Ressource. Der XmlAssembly-Wert ist der vollqualifizierte Name einer Assembly, die von der CLR ermittelt werden und geladen werden kann.
Wenn an diesem Punkt feststeht, dass nicht genügend Informationen in der Registrierung vorhanden, um eine Instanz der DDEX-Unterstützungsentität erstellen, wird der Registrierungsüberprüfungsschritt übersprungen. In diesem Fall die Methodenfälle zurück zu einer expliziten Implementierung der Schnittstelle IVsDataSourceSpecializer oder IVsDataProviderObjectFactory, wenn sie den DDEX-Anbieter implementiert wird. Andernfalls wird die Methode die entsprechende Assembly durch CodeBase oder vollständigen Namen (in dieser Reihenfolge) und ruft den Typ aus der Assembly ab. Wenn dieser Prozess keinen entsprechenden Typ vorhanden, wird DataProviderException ausgelöst.
Schließlich wird eine Instanz des Typs erstellt. Wenn die Unterstützungsentität von der Basisklasse IVsDataSupport-Schnittstelle erbt und zusätzliche Informationen über einen XML-Datei-Speicherort durch den Anbieter registriert wurde, werden diese Daten als Argumente den Typkonstruktor übergeben. Diese Informationen werden als der XML-Dateiname und der Pfad (zwei Zeichenfolgen) oder als XML-Ressourcenname und aufgelöste das Assembly-Objekt übergeben (eine Zeichenfolge und ein Assembly-Objekt). In letzterem Fall wird DataProviderException ausgelöst, wenn die Assembly nicht geladen werden kann. Wenn ein anderer Fehler tritt auf, wenn die Typinstanz erstellt wird, oder der erstellte Typ implementiert nicht den erwarteten Unterstützungsentitätstyp, wird DataProviderException ausgelöst.
Aufrufs-Quelle Specializer oder Anbieter-Objekt-Factory
Wenn Registrierungsüberprüfung nicht genügend Informationen suchen, um eine Instanz der Unterstützungsentität erstellen, wird zum DDEX-specializer das Quelle des Anbieters (wenn vorhanden) oder CreateObject-Methode der Object Factories (für einen Paket-basierten Anbieter) bezeichnet. Wenn eine nicht leere DDEX-Datenquelle an diese Methode übergeben wird, wird das specializer das Quelle des Anbieters (wenn vorhanden), zuerst aufgerufen. Wenn die Methode eine NotImplementedException auslöst oder keine neue Instanz zurückgibt, sie aufruft die Objektfactory des Anbieters, wenn vorhanden und ebenfalls ignoriert jedes NotImplementedException, die ausgelöst wird. Für alle anderen Ausnahmen wird DataProviderException ausgelöst.
Erstellen Sie Standardinstanz
Wenn kein Objekt durch diesen Punkt erstellt wurde, bedeutet dies, dass der DDEX-Anbieter nicht die Unterstützungsentität implementiert. Wenn die Unterstützungsentität eine Standardobjektimplementierung definiert, wird eine Instanz des Standardobjekts erstellt.
Hinweis
DDEX in Visual Studio 2005 unterstützt keine Standardobjektimplementierung, ist kein Standardobjekt erstellt.
Objekt-Positionieren
Alle neu erstellte Instanzen von DDEX unterstützen Entitäten, die diese Methode können mit drei Standardsiteobjekten positioniert werden können. Diese Objekte sind, wie folgt: ein globales Dienstanbieterobjekt, das IVsDataProvider-Objekt, das es erstellt und das IVsDataSource-Objekt, das die Datenquelle des spezifischen DDEX darstellt, für die sie erstellt wurde, wenn eine nicht leere DDEX-Datenquelle bereitgestellt wurde. Instanzen werden nur wenn die neu erstellte Instanz die IVsDataSiteableObject<T>-Schnittstelle mit generischen Typen IServiceProvider, IVsDataProvider oder IVsDataSource implementiert, bzw. positioniert.
Nach diesen Standardsiteobjekten wenn ein benutzerdefiniertes Site-Objekt in vom Aufrufer übergeben wird, wird die neue Instanz mit dem benutzerdefinierten Objekt platziert, wenn der IVsDataSiteableObject<T>-Schnittstelle implementiert.
Client-Objekt-Erstellung
Der letzte Schritt, wenn er eine DDEX-Unterstützungsentität erstellt, umfasst ein, Clientwrapperobjekt zu erzeugen, wenn die Entität mit der definiert wird. Dies geschieht, indem Sie zuerst den Unterstützungsentitätstyp für eine Instanz von DataClientObjectAttribute überprüft. Wenn diese Instanz ist, wird eine Instanz des Objekts, das die zugeordnete Klassen-ID identifiziert wird, erstellt und das Anbieterobjekt neue wird zu diesem Clientobjekt übergeben. Nachdem Clientobjekte erstellt sind, werden sie mit denselben Satz von Standard- und benutzerdefinierten Websiteobjekten positioniert, das dem zugrunde liegenden Anbieterobjekt bereitgestellt wurde.
Beispiele
Der folgende Code zeigt, wie diese Methode aufruft, um eine der Standardunterstützungsentitäten zu erstellen.
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>();
}
}
.NET Framework-Sicherheit
- Volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von nur teilweise vertrauenswürdigem Code nicht verwendet werden. Weitere Informationen finden Sie unter Verwenden von Bibliotheken aus teilweise vertrauenswürdigem Code.