如何为通用列表创建灵活的扩展方法?
我有 2 个对象项目和许可证。它们都继承自Entity对象(抽象类)。
现在我有一个扩展方法“GetNewId”,其中包含获取实体列表中下一个 id 的逻辑。
我已将此方法定义为扩展方法,但问题是 List(也是实体列表)和 List 看不到此方法。
我猜想,任何包含从同一基类继承的对象的通用列表都会出现此问题。
这个问题有解决办法吗?
编辑:在 C# 中工作
I have 2 objects Project and License. They both inherit from the object Entity (abstract class).
Now I have an extension method "GetNewId" that contains logic to get the next id in a list of entities.
I've defined this method as an extension method, but the problem is that List (which is also a list of entities) and List don't see this method.
I guess that this problem will occur with any generic list containing objects that inherit from the same base class.
Is there a solution for this problem?
edit: working in C#
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的 GetNewId() 方法是哪个类/接口的扩展?
如果您将其作为
IEnumerable
的扩展 - 其中 T 仅限于从您的Entity
基类派生 - 您应该能够在任何包含基于Entity
的对象的类集合:Cast
方法(来自System.Linq
)也在IEnumerable< 上定义/code> (但对于任何类型 T,没有限制),因此您可以在您的
许可证
实例上使用它。What class/interface is your
GetNewId()
method an extension of?If you make it an extension of
IEnumerable<T>
- where T is restricted to be derived from yourEntity
base class - you should be able to use the extension method on any collection like class containingEntity
based objects:The
Cast
method (fromSystem.Linq
) is also defined onIEnumerable<T>
(but on any type T, no restrictions), hence you can use it on yourlicenses
instance.