我正在尝试对对象解析进行一些动态文本,但是,在为结构创建和设置嵌套属性值时遇到了障碍。
如果我在一个结构对象中有一个属性,那么每当我使用反射来获取结构对象并设置它的任何属性/字段时,对象上的值都不会改变。以下面的对象图为例。
public struct MyStruct
{
public int MyIntProp {get;set;}
}
public class MyObj
{
public MyStruct NestedStruct {get;set;}
}
PropertyInfo pInfo = (myObj.GetType()).GetProperty("NestedStruct");
object nestedStruct = pInfo.GetValue(myObj); // This is the nested struct however it is only a copy not the actual object
PropertyInfo intInfo = (pInfo.PropertyType).GetProperty("MyIntProp");
intInfo.SetValue(nestedStruct, 23); // this sets the MyIntProp on the nestedStruct, but it is not set on the myObj.NestedStruct. My goal is to set object on that NestedStruct via reflection.
当我使用反射获取 NestedStruct 属性然后在该结构上设置 MyIntProp 时,原始的 MyObj.NestedStruct.MyIntProp 不会改变。自然,我将此归因于结构是值类型而不是引用类型的事实。
所以真正的问题是如何使用反射来获取对值类型的引用。