Asmx Web サービスを強化するために使用されていた古い Dll に最新の Wcf インターフェイスをラップするプロジェクトで、コードの重複を削減しようとしています。
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 に変換する方法があるのではないかと考えていました。どういうわけかデリゲートを抽出するだけです。