2016-08-24 79 views
3

我有一個靜態類與多個匿名對象。每個對象具有不同數量的屬性,但每個屬性始終是創建的類的對象。從靜態類c訪問匿名對象屬性#

static public class Fields{ 
    static public Object FieldInfo1 = new { 
     Customer = new FieldInformation("value1","value2")   
    } 

    static public Object FieldInfo2 = new { 
     Customer = new FieldInformation("value1","value2"), 
     Company = new FieldInformation("value1","value2"),   
    } 
} 

我嘗試訪問Fields.FieldInfo1.Customer在第二類(Program.cs中,它的控制檯應用程序),但它不工作,我只得到Fields.FieldInfo1.我在做什麼錯?

+1

.NET是一種安全的語言,所以你的代碼需要知道類型的起點,你不能在一個變量訪問屬性鍵入'object'因爲對象不包含名爲FieldInfo1的屬性。匿名類型在這裏可能是一個壞主意,你想要做什麼,爲什麼? – Charleh

+0

它將永遠不會工作,因爲Fields.FieldInfo1不包含公司屬性,只有客戶。 –

+0

@MurrayFoxcroft對不起我的壞,我的意思是客戶 –

回答

3

您需要將其轉換爲對象的類型。因爲你不(在編譯時)投as dynamic

var obj = Fields.FieldInfo1 as dynamic; 
var value = obj.Customer.Prop1; // "value1" 

但我不明白爲什麼你要做這種方式。這不是C#,它是一種強類型語言。在我看來,你應該重新考慮你的設計。

This可能給你當它是使用權匿名類型

+0

@Jauch - 我發佈之前執行它,它沒有。 (我確實需要用'Prop1','Prop2'創建一個'FieldInformation'類,用於問題中原始代碼的工作) –

+0

對不起@Gilad,我意識到我的錯誤。我試圖使用「Prop1」,但在我的代碼中,我用其他名稱:) – Jauch

+0

@Jauch - 沒問題:) –