试图减少项目中的代码重复,该项目将现代 Wcf 接口包装在旧 Dll 周围,该 Dll 用于为 Asmx Web 服务提供动力。
我正在尝试编写一个通用辅助方法,它采用 4 种类型(输入和输出类型的旧版本和新版本)、输入文档和指向旧 dll 中方法的 Func。
private static WcfOutType WrapCallAroundOldBl<WcfOutType, WcfInType, LinqOutType, LinqInType>(WcfInType input, Func<LinqInType, LinqOutType> method)
以为我可以做这样的事情:
var output = WrapCallAroundOldBl<
WcfOutputTypeName,
WcfINputTypeName,
LinqToXsdOutputTypeName,
LinqToXsdInputTypeName>(input, Our.Old.Dll.Methods.MethodName);
return output;
但我得到:
cannot convert from 'method group' to 'System.Func<OutputTypeName, InputTypeName>'
这有效:
var output = WrapCallAroundOldBl<
WcfOutputTypeName,
WcfINputTypeName,
LinqToXsdOutputTypeName,
LinqToXsdInputTypeName>(input, i => Our.Old.Dll.Methods.MethodName(i));
return output;
但我想知道是否有办法将这些“方法组”直接转换为 Func。只是以某种方式提取代表。