首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有参数参数的MethodInfo.Invoke

带有参数参数的MethodInfo.Invoke
EN

Stack Overflow用户
提问于 2014-04-17 23:55:33
回答 1查看 446关注 0票数 0

我有一个包含静态方法的静态类HelperMethods。我需要动态调用包含HelperMethods的程序集中的方法,但这个程序集有时是可用的。因此,我不能在包含所需方法程序集上进行引用。此外,我不能复制此方法的代码,因为它会生成我需要的从ServiceHost派生的自定义对象SpecificServiceHost,但代码的另一部分只需要知道它是一个ServiceHost对象。在SpecificServiceHost不可用的情况下,该方法只是创建一个常规的ServiceHost对象。

代码语言:javascript
复制
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抛出一个异常,baseAddresses不能为null,因为框架中实现了ServiceHost。我以为params参数会允许null引用。但事实并非如此!我该怎么办?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-04-18 00:00:56

抱歉的!我刚发现我自己。我太傻了!:)

只需更改:

代码语言:javascript
复制
var dynamicInstance = createServiceHost.Invoke(null, new object[] { typeof(IMyWcfServiceContract), new Uri[0]});

使用空基地址列表进行初始化!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23137895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档