【发布时间】:2015-02-04 19:10:51
【问题描述】:
我想提前道歉,因为我没有把点滴滴理解大局。
此方法违反 DRY,并且有一个常用的 3rd 方库,通常可以这样调用:
ThirdLibrary.DoWork(x => x.Blah....);
在尝试重构此方法时,我希望将这一行和它附近的其他一些行提取到一个单独的方法中......但我需要传入 lambda,而谷歌将我引导到 here 和 here.
我的困难在于将我与第三方库的确切情况转换为。
第三方元数据显示它是预期的:
public IDoWork<T> DoWork(Expression<Action<T>> expression);
我对如何为我的方法进行参数化感到困惑。
public void RepoDoWork(Action<ICustomerRepository> doworkrule)
{
ThirdLIbrary.DoWork(doworkrule);
}
这会产生错误 Argument type is not assignable to parameter type。
感谢您帮助我了解如何正确传递 lambda。
【问题讨论】:
-
ThirdLibrary.DoWork()究竟做了什么? -
哪一部分违反了DRY?
x => x部分?我不会担心的。 -
不确定您在寻找什么 - 方法要求表达并且您尝试通过委托...为什么不能通过
Expression开始? -
@DStanley...这是一个片段。为简洁起见,我没有包括所有其他被提取的内容。
-
@AlexeiLevenkov...因为我还没有在 Expression 上学习过...我现在正在谷歌搜索。