Mos*_*aou 7 .net c# generics types dynamic
我有一个使用通用方法的API如下
public static class DataProvider
{
public static Boolean DeleteDataObject<T>(Guid uid, IDbConnection dbConnection)
{
// Do something here
}
public static IDbConnection GetConnection()
{
// Get connection
}
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序包含在运行时使用CodeDOM生成的类,并且为了跟踪我创建了一个名为的接口IDataObject.我试图将每个对象的具体类型传递给上面的泛型方法,如下所示:
public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid)
{
return DataProvider.DeleteDataObject<T>(uid, DataProvider.GetConnection());
}
Run Code Online (Sandbox Code Playgroud)
dataObject包含从中继承的类的实例IDataObject.我有兴趣获得该类型并将其传递给T.我试图找出是否有可能在dynamic这里使用.typeof()并且GetType()不像这里所说的那样起作用
Jon*_*eet 17
我怀疑你想要这样的东西:
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());
}
Run Code Online (Sandbox Code Playgroud)
它dataObject动态地使用,获取"执行时编译器"来执行类型推断T.
您可以使用反射来自行完成,使用MethodInfo.MakeGenericMethod- 但这种方式肯定会减少代码.