MethodInfo.Invoke带有params参数



我有一个包含静态方法的静态类HelperMethods。我需要在包含HelperMethods的程序集中动态调用一个方法,但这个程序集有时是可用的。因此,我无法对包含我需要的方法的程序集进行引用。此外,我无法复制此方法的代码,因为它生成了一个从ServiceHost派生的自定义对象SpecificServiceHost,但代码的另一部分只需要知道它是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));
  }
}

现在,由于ServiceHost在框架中的实现,createServiceHost.Invoke抛出了一个异常,即baseAddresses不能是null。我认为params自变量将允许引用null。但事实并非如此!我该怎么办?谢谢

对不起!我刚刚发现自己。。。我真愚蠢!:)

简单更改:

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

用空的基地址列表初始化!

相关内容

  • 没有找到相关文章

最新更新