预先填充的抽象方法

时间:2012-10-25 14:40:00

标签: c# abstract

我有一个类需要一些抽象方法来调用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中预先填充覆盖的类(可能有属性?)。 / p>

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

谢谢;)

1 个答案:

答案 0 :(得分: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();
   }
}