2016-08-24 5 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"),   
    } 
} 

は、私は2番目のクラス(Program.csが、そのコンソール・アプリケーション)でFields.FieldInfo1.Customerにアクセスしようとするが、それは動作していない、私は私が間違って何をやっているFields.FieldInfo1.を取得しますか?

+1

.NETはタイプセーフ言語である匿名型を使用する権利であるときの出発点を与えるかもしれませんobjectには 'FieldInfo1'というプロパティが含まれていないので、' object'と入力します。匿名のタイプはおそらくここでは悪い考えです。あなたは何をしようとしていますか、なぜですか? – Charleh

+0

Fields.FieldInfo1にはCompanyプロパティが含まれておらず、Customerのみが含まれているため、これはうまくいきません。 –

+0

@MurrayFoxcroft申し訳ありません私の悪い、私は顧客 –

答えて

3

オブジェクトの型にキャストする必要があります。あなたが持っているので(コンパイル時)以外はas dynamicをキャスト:

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

しかし、あなたはこのようにそれを行う必要があり、なぜ私は表示されません。これは強く型付けされた言語であるC#のようなものではありません。私の意見では、あなたのデザインを考え直すべきです。

Thisあなたがの変数のプロパティにアクセスすることはできません、あなたにあなたのコードは種類を意識する必要がありますので

+0

@ジャウチを意味する - 私は転記する前にそれを実行し、それはありません。 (私は、問題の元のコードの 'Prop1'、' Prop2'で 'FieldInformation'クラスを作成しなければなりませんでした) –

+0

ごめんなさい@Gilad、私は間違いを認識しました。私は "Prop1"を使用しようとしましたが、私のコードでは他の名前を使用しました:) – Jauch

+0

@Jauch - 問題ありません:) –

関連する問題