gpt4 book ai didi

c# - 在泛型上调用实例方法的委托(delegate)

转载 作者:行者123 更新时间:2023-11-30 19:48:30 24 4
gpt4 key购买 nike

我没有找到这个答案,因为我认为我对它的正确术语了解不够。

(为了代码的清晰度和我如何调用它而编辑)

我有一个实例化扩展方法的类:

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>();

同样,大大简化了。

现在,我想做的是添加一个委托(delegate)(?),以便在我获得列表后,我可以在列表中的每个 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 中传递什么.. 委托(delegate)、谓词或 Action ,主要是因为我仍然对 Linq 有挑战。

或者,也许这是不可能的?

最佳答案

你想要的是一个 Action< T >,这样你就可以:

public static class Foo
{
public static IList<T> Bar(this DataTable table, Action<T> postProcess)
{
IList<T> list = ... // do something with DataTable.

foreach(T item in list)
{
postProcess(item);
}

return list;
}
}

关于c# - 在泛型上调用实例方法的委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5433621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com