정적 메서드가 포함 된 정적 클래스 HelperMethods
이 있습니다. HelperMethods
이 포함 된 어셈블리에서 동적으로 메서드를 호출해야하지만이 어셈블리는 때로는 사용할 수 있습니다. 따라서 필요한 어셈블리를 포함하는 어셈블리에 대한 참조를 가질 수 없습니다. 또한 ServiceHost
에서 파생 된 사용자 정의 객체 SpecificServiceHost
을 생성하기 때문에이 메소드의 코드를 복사 할 수 없지만 코드의 다른 부분은 ServiceHost
객체라는 것을 알아야합니다. SpecificServiceHost
을 사용할 수없는 경우이 메서드는 일반 ServiceHost
개체를 만듭니다.Params 인수가있는 MethodInfo.Invoke
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
인해 프레임 워크 ServiceHost
의 구현에 null
를 안된다는 예외가 발생합니다. params
인수는 null
개의 참조를 허용 할 것이라고 생각했습니다. 그러나 그렇지 않습니다! 어떻게해야합니까? 감사!