基本上,我使用的是为所有表创建实体对象的ORM(特别是LLBLGen).所有这些实体类型都从基类(或实际上是它们的集合)继承.我想创建一个扩展方法,该方法接受基类的List并返回一些字符串,但是我想传递继承的类型而无需显式转换.
例如,我有一个类似的功能:
string GetString(List<EntityBase2> list); // also tried List<IEntityCore>, which the base class implements
我想通过这样的事情:
List<ProductEntity> products = ... // populate it
string v = GetString(products);
但是我得到了编译器错误.
我如何完成创建此帮助器方法.如果可以的话,我想避免进行强制转换,但是如果这是最好的方法,那么至少我可以对此进行确认.
解决方法:
尝试这个:
string GetString<T>(List<T> list) where T : IEntityCore {...}
这样,您将获得一个通用方法,该方法采用实现IEntityCore的对象的列表.不需要强制转换,编译器将确保您传递正确的对象.从Framework 2.0开始工作.
标签:generics,c,net 来源: https://codeday.me/bug/20191210/2100335.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。