C#中如何通过变量字段名获取动态实例的ACUnits_List?
解决方法
因为你用dynamic声明实例时,直接写instance.field会被解析为查找名为field的字段,而非变量field存储的目标字段名;同时dynamic实例本身不会直接提供反射相关方法,得通过反射API实现动态字段访问。
具体实现代码如下:
string field = "ACUnits_List"; // 获取对应字段的信息,若为非公共字段需添加BindingFlags参数匹配权限 FieldInfo fieldInfo = instance.GetType().GetField(field); // 获取字段值并转换为目标类型 List<ACUnit> acList = (List<ACUnit>)fieldInfo.GetValue(instance);
补充说明:
instance.GetFields()报错是因为GetFields()是Type类的方法,不是实例方法,正确用法是instance.GetType().GetFields()instance[field]报错是因为你的ACUnits类未实现索引器,因此不能通过索引方式访问字段
内容的提问来源于stack exchange,提问作者KWallace
相关产品推荐
相关产品推荐

