在我的应用程序中,我从某处收到 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: Non-static method requires a target.
这意味着非静态方法需要一个对象。如果您有一个实例成员,那么您必须使用一个实例来获取它的值。因为没有实例它不存在。所以你需要将类型的实例而不是
null
传递给GetValue
方法。或者如果你不希望它成为实例成员,则使成员static
.
这个错误的另一个原因是,当你从实例对象中读取一个值时,你读取的实例对象是
null
.