gpt4 book ai didi

c# - 如何评估作为参数传递给方法的 Func/Delegate/Expression?

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:13 26 4
gpt4 key购买 nike

我想编写一个扩展方法,它将运行某个对象的方法,并返回执行期间发生的异常(如果有的话)。

换句话说,使 myObject.Foo() 的动态成为 anyObject.AnyMethod(...)。

Exception incurredException = null;
try
{
myObject.Foo();
}
catch(Exception e)
{
incurredException = e;
}

return incurredException;

对此:

Exception e = IncurredException( () => myObject.Foo() );

我不知道 Func、Expression、Delegate 等在这里是否合适。想法?谢谢!

最佳答案

假设您不关心返回类型,您需要这样的东西:

public static Exception IncurredException(Action action)
{
try
{
action();
}
catch (Exception e)
{
return e;
}

return null;
}

然后您可以根据需要调用它:

Exception e = IncurredException( () => myObject.Foo() );

或者更简洁一点,使用 var 和方法组语法:

var e = IncurredException(myObject.Foo);

关于c# - 如何评估作为参数传递给方法的 Func/Delegate/Expression?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24113056/

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