1

我有一个类需要一些抽象方法来调用 LinQ 表达式来获取我不知道类型的集合。

像这样的东西:

abstract List<object> Find(IEnumerable<object> items, object objectToFind)

因此,覆盖方法必须开始强制转换对象才能对它们执行 LinQ 查询。

类似的东西:

List<StrongType> things = items.Cast<StrongType>().ToList();
var thingToFind = (StrongType) objectToFind;
// <- PERFORM LINQ HERE
return result.Cast<object>().ToList();

一切正常,但如果其他人需要从抽象的类中创建另一个子类,他可能会犯一个大错误。

所以...我只需要一些建议来帮助我,也许可以通过一些代码而不仅仅是注释来简化我的技术,或者是否有可能有一些代码来强制在 Visual Studio 中预填充覆盖的类(可能带有属性?)。

我希望被理解(我的英语有点差)

谢谢 ;)

4

1 回答 1

3

为什么不能在抽象方法或类定义中使用泛型?

abstract List<T> Find(IEnumerable<T> items, T objectToFind)

然后继承你的类

public class Foo : Bar<StrongType>
{
   public override List<StrongType> Find(IEnumerable<StrongType> items, StrongType objectToFind)
   {
       // perform LINQ here
       return result.ToList();
   }
}
于 2012-10-25T14:43:51.143 回答