2012-04-08 5 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#이 동일한 이름의 두 가지 변수를 허용하지 않기 때문입니다. 내가 당신이라면

당신은 내가 다음을 수행 아마 것

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

를 선언 할 수 없습니다.

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

목록을 만들 수 있습니다. 요소가 하나만 있으면 크기 1 요소의 목록이 있습니다.

0

C# 사양은 형식 멤버가 고유 한 이름 (모호한 멤버 참조를 방지하는 것으로 가정 함)이 있어야한다고 말합니다. 특히, http://msdn.microsoft.com/en-us/library/aa691137(v=vs.71).aspx 참조 : 한 번에 X 형의 단일 값을 반환 X라는 이름의 속성, 다른에서 X의 배열을 필요로하는 경우

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

당신은 동적 키워드를 사용할 수 있습니다.

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

고마워,하지만 그게 나를 도와주지. C#에서 변수가 개체 또는 배열인지 여부를 확인하는 방법이 있습니까 ?? 내가 IfMonday() 대신 사용할 수 있도록 .... PHP의 bool과 같은 것 is_array() ?? – anurag

+0

bool b = (x는 T [])를 의미합니까? ? – cdiggins

관련 문제