System.Reflection.TargetException是什么:非静态方法需要一个目标。意思?

时间:2015-02-05 10:59:34

标签: c# system.reflection

在我的应用程序中,我从某处收到functionCode值,需要反映相应的类。我尝试根据this解决方案反映出合适的类型。但它对我不起作用。我不能使用GetField()方法,因为我正在开发一个PCL项目。因此我尝试了这些代码:

AssemblyName name = new AssemblyName("MyLibrary");
var type = Assembly.Load(name);
type.DefinedTypes.FirstOrDefault(x =>
x.GetDeclaredProperty("functionCode") != null &&
 (byte)x.GetDeclaredProperty("functionCode").GetValue(null) == val);

它也不起作用。它抛出System.Reflection.TargetException:非静态方法需要一个目标。

1 个答案:

答案 0 :(得分:3)

这意味着非静态方法需要一个对象。如果您有实例成员,那么您必须使用实例来获取它的值。因为没有实例它就不存在。所以你需要将类型的实例而不是null传递给GetValue方法。如果你没有&#,请成员static 39;不希望它成为实例成员。