我試圖做一些動態的文本對象分析,但是,我創建和設置嵌套屬性值的結構時遇到了一個障礙。c#嵌套結構屬性的反射
如果我在一個結構對象中有一個屬性,每當我使用反射來獲取結構對象並設置它的任何屬性/字段時,對象的值都不會改變。拿下面的對象圖。
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不會改變。當然,我將其歸因於結構是值類型而不是引用類型的事實。
所以真正的問題是我如何使用反射來獲取值類型的引用。
有沒有可能避免讓可變結構開始? –
這真的是我正在創建的庫,它允許將分隔文件解析爲動態對象。到目前爲止,它可以找到純引用類型的對象。然而,當進入價值型容器時,我似乎遇到了這個問題。 – galford13x
所以不要使用「值類型容器」。基本上,可變的結構只是壞消息。 –