2012-04-08 6 views
0

動的に更新するjsonからデータを取得しています。これは、しばらくしてX型のオブジェクトを含み、他の時にX型のオブジェクトの配列を含みます。上記の状況のいずれかで働くことができる親クラスYが必要です。また、オブジェクト名:xも変わりません。同じ名前と同じクラス定義のオブジェクトとオブジェクトの配列を持つ可能性のある方法はありますか?

class Y 
{ 
    public X x { get; set; } 
    public X[] x { get; set; } 
} 
class X 
{ 
    public int a { get; set; } 
} 

これは、エラーを示しています。YはすでにX
の定義が含まれているタイプは、それを行うにはすべての可能な方法はあります?

+1

それはどういう意味ですか? obj.xは何を解決しますか? –

答えて

0

エラーが発生する理由は、C#では同じ名前の2つの型の変数を使用できないためです。

あなたは私があなただったら、私はおそらく、次のことを行うだろう

SomeMethod() 
{ 
    int x = 0; 
    string x = "something"; 
} 

を宣言することはできません。

class Y 
{ 
    public List<X> listOfX{get; set;} 
} 
class X 
{ 
    public int a { get; set; } 
} 

リストを作成できます。要素が1つしかない場合は、サイズ1の要素のリストがあります。

0

C#仕様では、型のメンバには一意の名前が必要です(あいまいなメンバ参照を避けることを前提としています)。具体的には、http://msdn.microsoft.com/en-us/library/aa691137(v=vs.71).aspxを参照してください:

Because every member of a namespace or type must have a unique name, it follows that the fully qualified name of a namespace or type is always unique.

0

一度にX型の単一の値を返すために、Xという名前の属性、および他のXの配列が必要な場合は、動的なキーワードを使用することができます。

class Y 
{ 
    public dynamic x { get { return IfMonday() ? new X() : new X[100]; set; } 
} 
+0

ありがとうございますが、私を助けてくれません。 変数がオブジェクトか配列かどうかをチェックする方法はありますか?私がIfMonday()の代わりに使うことができるように。 PHPのbool is_array()のようなもの? – anurag

+0

bool b =(xはT [])であることを意味しますか? ? – cdiggins

関連する問題