c#unity调用方法在代理上使用反射

时间:2013-06-05 08:51:06

标签: c# exception reflection proxy aop

我一直坚持一个问题。我有这样的代码:

ITest test= ObtainObject(); //ObtainObjectimplementation omitted
Type type = test.GetType();
MethodInfo method = type.GetMethod("Display");
method.Invoke(test, new object[] {"hi"});

interface ITest {
    [LoggerAspect]
    Display(String msg);
}

class Test : ITest 
{
    public void Display(String msg) 
    {
        MessageBox.Show(msg);   
    }
}

问题是当我更换

method.Invoke(test, new object[] {"hi"});

test.Display("Hi")

包括方面在内的一切都运行良好。测试是一个代理对象,如果我在该代理上调用它,它会抛出我

TargetException: Object does not match target type

问题是我需要使用反射,你有没有遇到过这样的问题? 感谢您的建议

1 个答案:

答案 0 :(得分:0)

为什么接口中的Display方法没有定义任何返回类型?我认为甚至不应该首先编译。

您还应该考虑显示ObtainObject代码,以便我们确切知道您是如何获得界面的。除此之外,我想我做不了多少。