У меня есть служба WCF, которая принимает объект в качестве параметра, который имеет URI и имя метода.То, что я пытаюсь сделать, это иметь метод, который будет выглядеть @ URI, если он содержит слова "localhost", он будет использовать отражение и вызовет метод, имя которого передается в качестве параметра, в том же классе, верните значение и продолжайте.
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 (новый Test (), 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;
}