【发布时间】:2011-03-25 14:14:42
【问题描述】:
我没有太多运气来寻找这个答案,因为我认为我对它的正确术语了解不够。
(为了清晰的代码和我如何称呼它而编辑)
我有一个实例化扩展方法的类:
public static class Foo
{
public static IList<T> Bar<T>(this DataTable table) where T : class, new()
{
IList<T> list = ... // do something with DataTable.
return list;
}
}
我这样称呼这个方法:
DataTable table = SomehowGetTable();
IList<MyObject> list = table.Bar<MyObject>();
再次,大大简化。
现在,我想做的是添加一个委托(?),以便在获得列表后,我可以在列表中的每个 T 上调用一个方法,如下所示:
public static class Foo
{
public static IList<T> Bar<T>(this DataTable table, MyDelegate postProcess)
{
IList<T> list = ... // do something with DataTable.
foreach(T item in list)
{
t.postProcess();
}
return list;
}
}
我不知道我需要在 postProcess 中传递什么。委托、谓词或动作,主要是因为我仍然面临 Linq 挑战。
或者,也许这根本不可能?
【问题讨论】:
-
您的第一个示例也不起作用,是吗?无法从
DataTable推断出T。 -
Bar也没有定义为泛型,T也没有在其他任何地方定义(当然,假设没有名为T的实际类型) -
我大大减少了我实际拥有的代码,并且无意中遗漏了一些东西,因为我急于发布这个问题以得到一些工作。第一个示例确实适用于我的世界...我会看看是否可以对其进行编辑以使其更有意义。
-
亨克和亚当,我才意识到你在指出什么。现在正在针对这一点进行编辑...
标签: c# .net linq generics delegates