MethodInfo.Invoke with params参数

时间:2014-04-17 15:55:33

标签: c# reflection invoke params methodinfo

我有一个包含静态方法的静态类HelperMethods。我需要动态调用包含HelperMethods的程序集中的方法,但这个程序集有时是可用的。所以我不能在包含我需要的方法的程序集上有参考。此外,我无法复制此方法的代码,因为它生成了我需要的SpecificServiceHost派生的自定义对象ServiceHost,但代码的其他部分只需要知道它是{{{ 1}}对象。如果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引发了baseAddresses一定不能为null的异常。我认为ServiceHost参数允许params引用。但事实并非如此!我该怎么办?谢谢!

1 个答案:

答案 0 :(得分:0)

抱歉!我刚刚发现自己......这对我来说太愚蠢了! :)

简单地改变:

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

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