将具体对象类型作为generics方法的参数传递
我有一个使用通用方法的API如下
public static class DataProvider { public static Boolean DeleteDataObject(Guid uid, IDbConnection dbConnection) { // Do something here } public static IDbConnection GetConnection() { // Get connection } }
我的应用程序包含在运行时使用CodeDOM生成的类,为了跟踪我创建了一个名为IDataObject
的接口。 我试图将每个对象的具体类型传递给上面的generics方法,如下所示:
public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid) { return DataProvider.DeleteDataObject(uid, DataProvider.GetConnection()); }
dataObject
包含从IDataObject
inheritance的类的实例。 我有兴趣获得该类型并将其作为T
传递。 我试图找出是否有可能在某种程度上使用dynamic
这里。 typeof()
和GetType()
不能像Here中所述那样工作
我怀疑你想要这样的东西:
public static Boolean PurgeDataObject(this IDataObject dataObject, Guid uid) { return PurgeDataObjectImpl((dynamic) dataObject, uid); } private static Boolean PurgeDataObjectImpl(T dataObject, Guid uid) where T : IDataObject { return DataProvider.DeleteDataObject (uid, DataProvider.GetConnection()); }
它动态地使用dataObject
,让“执行时编译器”执行类型推断来计算出T
你可以使用reflection来自己使用MethodInfo.MakeGenericMethod
来做这件事 – 但这种方式肯定是更少的代码。
上述就是C#学习教程:将具体对象类型作为generics方法的参数传递分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/952358.html