I have an API using generic method as follow
public static class DataProvider
{
public static Boolean DeleteDataObject<T>(Guid uid, IDbConnection dbConnection)
{
// Do something here
}
public static IDbConnection GetConnection()
{
// Get connection
}
}
My application contains classes generated using CodeDOM at runtime, and in order to keep track of I created an interface called IDataObject
. I am trying to pass the concrete type of each object to the generic method above as follow:
public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid)
{
return DataProvider.DeleteDataObject<T>(uid, DataProvider.GetConnection());
}
dataObject
contains an instance of a class that inherit from IDataObject
. I am interested in getting that type and pass it as T
. I am trying to find out if it is possible to somehow use dynamic
here. typeof()
and GetType()
does not work as stated in Here
I suspect you want something like this:
public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid)
{
return PurgeDataObjectImpl((dynamic) dataObject, uid);
}
private static Boolean PurgeDataObjectImpl<T>(T dataObject, Guid uid)
where T : IDataObject
{
return DataProvider.DeleteDataObject<T>(uid, DataProvider.GetConnection());
}
That uses dataObject
dynamically, getting the "execution-time compiler" to perform type inference to work out T
.
You could just use reflection to do this yourself, using MethodInfo.MakeGenericMethod
- but this way is certainly less code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With