在我的应用程序中,我从某处收到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:非静态方法需要一个目标。
答案 0 :(得分:3)
这意味着非静态方法需要一个对象。如果您有实例成员,那么您必须使用实例来获取它的值。因为没有实例它就不存在。所以你需要将类型的实例而不是null
传递给GetValue
方法。如果你没有&#,请成员static
39;不希望它成为实例成员。