我一直坚持一个问题。我有这样的代码:
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
问题是我需要使用反射,你有没有遇到过这样的问题? 感谢您的建议
答案 0 :(得分:0)
为什么接口中的Display
方法没有定义任何返回类型?我认为甚至不应该首先编译。
您还应该考虑显示ObtainObject
代码,以便我们确切知道您是如何获得界面的。除此之外,我想我做不了多少。