Csharp/C#教程:将具体对象类型作为generics方法的参数传递分享


将具体对象类型作为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包含从IDataObjectinheritance的类的实例。 我有兴趣获得该类型并将其作为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

(0)
上一篇 2021年11月19日
下一篇 2021年11月19日

精彩推荐