【发布时间】:2011-08-24 05:25:08
【问题描述】:
这是简化的设置 - 我有 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
}
那么,使用后一种方法有点难看。
这就是为什么即使只是为了学习目的,我的包装器的方法签名应该是什么样子的?又该如何使用呢?
【问题讨论】: