0

静的メソッドを含む静的クラスHelperMethodsがあります。が含まれているアセンブリでメソッドを動的に呼び出す必要がありますHelperMethodsが、このアセンブリが使用できる場合があります。したがって、必要なメソッドを含むそのアセンブリを参照することはできません。また、このメソッドのコードをコピーすることはできません。これは、必要なメソッドからSpecificServiceHost派生したカスタム オブジェクトを生成するServiceHostためですが、コードの他の部分は、それがオブジェクトであることを認識する必要があるだけServiceHostです。が利用できない場合SpecificServiceHost、メソッドは単純に通常のServiceHostオブジェクトを作成します。

private ServiceHost TryFindSpecialServiceHost()
{
  try
  {
    var dynamicType = Type.GetType("Common, SuperApplication.Common.HelperMethods", true);
    // Should find "public static SpecificServiceHost CreateSpecificServiceHost(Type serviceType, params Uri[] baseAddresses)" method
    var createServiceHost = dynamicType.GetMethod("CreateSpecificServiceHost",
                                                  BindingFlags.Public | BindingFlags.Static,
                                                  null,
                                                  new[] { typeof(Type), typeof(Uri[]) },
                                                  null);
    var dynamicInstance = createServiceHost.Invoke(null, new object[] { typeof(IMyWcfServiceContract), null });

    return (ServiceHost) dynamicInstance;
  }
  catch
  {
    return new ServiceHost(typeof(IMyWcfServiceContract));
  }
}

これで、フレームワークでの の実装が原因であってはならないcreateServiceHost.Invoke例外がスローされます。引数は参照を許可すると思いました。しかし、そうではありません!私は何をすべきか?ありがとう!baseAddressesnullServiceHostparamsnull

4

1 に答える 1

0

ごめん!私は自分自身を見つけた. それは私の愚かです !:)

変更するだけです:

var dynamicInstance = createServiceHost.Invoke(null, new object[] { typeof(IMyWcfServiceContract), new Uri[0]});

ベースアドレスの空のリストで初期化するには!

于 2014-04-17T16:00:56.310 に答える