这是简化的设置 - 我有 API(我无法控制 API),它公开了这样的 Func 属性:
public Func<dynamic, MyClass> FuncProperty { get; set; }
通常它是这样使用的:
api.FuncProperty = s =>
{
do1();
do2();
return new MyClass(); //simplified
}
到处都在使用类似的代码(当然 {} 中的内容不同),我想为所有这些添加通用功能,我想创建一个“包装器”方法,我可以这样使用:
api.FuncProperty = MyWrapperMethod(
s =>
{
do1();
do2();
return new MyClass();
});
我知道我可以编辑所有这些调用看起来像:
api.FuncProperty = s =>
{
DoMyCommonFunctionality();
//... as before
}
但是,如果我的常见功能是这样的:
using(var disposable = SetSomeState())
{
//the stuff which previously was in the lambda
}
那么,使用后一种方法有点难看。
这就是为什么即使只是为了学习目的,我的包装器的方法签名应该是什么样子的?我应该如何使用它?