Ich habe eine API generische Methode wie folgtPass konkrete Objekttyp als Parameter für generische Methode
public static class DataProvider
{
public static Boolean DeleteDataObject<T>(Guid uid, IDbConnection dbConnection)
{
// Do something here
}
public static IDbConnection GetConnection()
{
// Get connection
}
}
Meine Anwendung enthält Klassen generiert CodeDOM zur Laufzeit mit und um den Überblick zu behalten ich eine Schnittstelle geschaffen genannt IDataObject
. Ich versuche, den konkreten Typ jedes Objekts zu dem allgemeinen Verfahren, das oben wie folgt zu übergeben:
public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid)
{
return DataProvider.DeleteDataObject<T>(uid, DataProvider.GetConnection());
}
dataObject
enthält eine Instanz einer Klasse, die von IDataObject
erben. Ich interessiere mich dafür, diesen Typ zu bekommen und es als T
zu übergeben. Ich versuche herauszufinden, ob es irgendwie möglich ist, dynamic
hier zu verwenden. typeof()
und GetType()
funktioniert nicht wie in Here
Es gibt einige Tricks, um dynamisch als Brücke zwischen Reflexion und Generika zu verwenden, aber sie benötigen eine Instanz. Wenn Sie keine Instanz haben, ist MakeGenericMethod Ihr Hauptwerkzeug. Oder eine nicht-generische API ... –
@MarcGravell: 'dataObject' ist eine Instanz, die Typinformationen enthält, die ich extrahieren und weitergeben möchte. Werfen Sie einen Blick auf Jon Antwort –