【发布时间】:2023-03-10 17:01:01
【问题描述】:
我必须在一个未知对象中设置一个属性。结构如下:
ObjA.ObjB().ObjC.PropA = propValue;
ObjA 来自被引用的类。 ObjB() 是 object 类型,因此 ObjC 是未知的。我考虑过使用反射,但不知道在这种情况下如何正确使用它。
object objB = ObjA.ObjB();
Type objBType = objB.GetType();
System.Reflection.XXXInfo objCInfo = objBType.GetXXX("ObjC");
Type objCType = objCInfo.GetType();
System.Reflection.PropertyInfo PropAInfo = objCType.GetProperty("PropA");
PropAInfo.SetValue(PropAInfo, propValue, null);
答案(感谢 BigM):
dynamic objAB = ObjA.ObjB();
objAB.ObjC.PropA = propValue;
【问题讨论】:
-
你不能重构它来创建一个通用的接口或基类吗?它将更易于维护和防故障。
-
objBType.GetProperty("ObjC");不工作?
标签: c# class object reflection gettype