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

a.t*_*aby 4 c# system.reflection

在我的应用程序中,我从某个地方收到functionCode值,并且需要反映相应的类。我试图根据 解决方案反映适当的类型。但这对我不起作用。我无法使用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);
Run Code Online (Sandbox Code Playgroud)

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

Sel*_*enç 5

这意味着非静态方法需要一个对象。如果您有一个实例成员,则必须使用一个实例来获取它的值。因为没有实例就不存在,因此您需要将类型的实例传递null给方法GetValuestatic或者如果不希望将其作为实例成员,则将该成员传递给该成员。