URI 및 메서드 이름이있는 매개 변수로 개체를 받아들이는 WCF 서비스가 있습니다. 내가하려고하는 것은 URI가 "localhost"라는 단어를 포함하는 경우 URI를 찾는 방법입니다. 리플렉션을 사용하고 동일한 메서드 내에서 매개 변수로 전달 된 이름의 메서드를 호출합니다. 클래스에서 값을 반환하고 계속하십시오.동일한 클래스 내에서 Reflection to Invoke 메서드를 사용하려고 시도했습니다.
public class Test
{
public GetStatResponse GetStat(GetStatRequest request)
{
GetStatResponse returnValue = new GetStatResponse();
if(Helpers.Contains(request.ServiceURI,"localhost", StringComparison.OrdinalIgnoreCase))
{
MethodInfo mi = this.GetType().GetMethod(request.ServiceMethod /*, BindingFlags.Public | BindingFlags.IgnoreCase*/);
returnValue = (GetStatResponse)mi.Invoke(this,null);
}
위의 내용은이 질문과 관련된 코드 세그먼트입니다. MethodInfo는 아무런 문제가 없지만 mi.Invoke에 문제가 있습니다. 내가받는 예외는 "호출 대상에 의해 예외가 발생했습니다."입니다. 내부 예외 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다". 나는 행운과 함께 (GetStatResponse) mi.Invoke (new Test(), null)로 코드를 변경해 보았습니다. 시험은 수업입니다.
이 문제를 해결하는 방법에 대한 다른 제안이 열려 있습니다. 반사가 가장 쉽다고 생각했습니다.
내 테스트를 호출 오전 방법은 반사를 통해 당기는하는 MethodInfo가 null가 아닌 것을 확실하게 할 수 있습니다 메서드를 호출하기 전에
public GetStatResponse TestMethod()
{
GetStatResponse returnValue = new GetStatResponse();
Stat stat = new Stat();
Stat.Label = "This is my label";
Stat.ToolTip = "This is my tooltip";
Stat.Value = "this is my value";
returnValue.Stat = stat;
return returnValue;
}
대상 메서드에 매개 변수가 필요합니까? –
대상 메서드에 매개 변수가 없습니다. –