public class Test{
public string name{get;set}
public short age{get;set;}
}
……
var type = typeof(Test);
var ins = Activator.CreateInstance(type);
type.InvokeMember("name", BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty, null, ins ,new object[] { "alibaba" });
type.InvokeMember("age", BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.SetProperty | BindingFlags.SetField | BindingFlags.SuppressChangeType, null, ins ,new object[] { 2 });
...
运行时找不到方法“age”的异常,如果我将“age”的类型更改为 int 或其他 32+ 数字类型,它可以工作
InvokeMember 是否不支持 short、int16 等类型。或者我可能会改变另一种分配价值的方式。
任何帮助表示赞赏