我有一个使用通用方法的API,如下所示
public static class DataProvider
{
public static Boolean DeleteDataObject<T>(Guid uid, IDbConnection dbConnection)
{
// Do something here
}
public static IDbConnection GetConnection()
{
// Get connection
}
}
我的应用程序包含在运行时使用CodeDOM生成的类,为了跟踪我创建了一个名为IDataObject
的接口。我试图将每个对象的具体类型传递给上面的泛型方法,如下所示:
public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid)
{
return DataProvider.DeleteDataObject<T>(uid, DataProvider.GetConnection());
}
dataObject
包含一个继承自IDataObject
的类的实例。我有兴趣获取该类型并将其作为T
传递。我试图找出是否有可能在这里使用dynamic
。 typeof()
和GetType()
无效,如Here
答案 0 :(得分: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());
}
动态使用dataObject
,让“执行时编译器”执行类型推断以计算T
。