如何从方法名称轻松创建Func <t>?</t>

时间:2014-11-27 15:13:46

标签: c# wcf delegates anonymous-delegates

尝试减少项目中的代码重复,该项目将现代Wcf接口包装在用于为Asmx Web服务提供动力的旧Dll周围。

我正在尝试编写一个通用的辅助方法,它有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。 只是以某种方式提取代表。

0 个答案:

没有答案