2009-08-26 2 views
0

를 추출 :는 어떻게이 개체를 반환하는 기능이 개체 .NET

var result = AjaxUserToPlacePaging(); 

//this is the object 
object[] objcs = new object[1]; 

objcs[0] = new 
{ 
    countHereNow = countHereNow.ToString(), 
    countWillBeHere = countWillBeHere.ToString(), 
    countWasHere = countWasHere.ToString() 
}; 

가 어떻게 객체에서 정보를 추출 할 수 있습니다? 예

int count = result[0].countHereNow; 

내가 될 수있는 기능을 nned resun위한

답변

2

는 I는 권하지 내가 JQuery와 를 사용하고 jQuery로는 오브젝트를 취해 JSON로 변환 때문에 목적은 사용자 정의 클래스를 만들고 저장하는 대신 익명 유형을 "객체"에 직접 저장하는 것입니다. 당신이 검색 다시 캐스팅 할 수

objcs[0] = new MyClass 
{ 
    countHereNow = countHereNow.ToString(), 
    countWillBeHere = countWillBeHere.ToString(), 
    countWasHere = countWasHere.ToString() 
}; 

:

MyClass myClass = result[0] as MyClass; 
if (myClass != null) 
{ 
    int count = myClass.countHereNow; 
} 

이 익명 유형의 작업을 할 수있는 트릭이 있지만, 대부분의 경우, 그들은 단지 코드가 덜 수 있도록 유지할 수있는.

+5

'if (myClass! = null)'. 이것은 C#입니다. –

+0

당신이 배열 선언을 구현한다면, 아래 답변에 따라 유형을 만들어야합니다. –

+0

@Mehrdad : 고마워 - 고쳤습니다. @Jaimal Chohan : 로컬 범위 외부에서이 메서드를 사용하지 않으려면 (즉, 메서드에서 반환), 제대로 작동합니다. 그래도 IMO는 분명하지 않습니다. –

4

당신은 Reflection를 사용해야합니다 :

string countHereNow = string.Empty; 
Type objType = result[0].GetType(); 
PropertyInfo prop = objType.GetPropertyInfo("countHereNow"); 
countHereNow = prop.GetValue(result[0], null) as string ?? string.Empty; 

일반적으로 나는 익명 형식을 반환하는 것은 나쁜 아이디어라고 생각하지만, 어쩌면 당신은 그것을위한 이유가있다. 그렇지 않으면 사용자 지정 클래스를 만들고 그 클래스 유형의 배열을 반환합니다.

+0

이 반환 CS0021 : []와 (과)의 인덱스를 'object'유형의 표현식에 적용 할 수 없습니다. – avi

+0

정확히 무엇을 반환합니까? 당신의 코드는 이것을 보여주지 않습니다 ... "result"가 object [] 타입인지 확인해야합니다 ... –

0

익명 개체의 내용을 사용자가 만든 함수 외부로 가져 오려면 리플렉션 (또는 리플렉션을 사용하는 무언가)을 사용해야합니다. 어쩌면 당신은 클래스를 생성하고 그 대신 인스턴스를 반환해야합니까?

0

현재

object[] objcs = new object[1]; 

는 암시 적으로 입력 (VAR) 배열

var objcs = new []; 

실제로 배열에 추가 개체가 승리 그런 식으로 선언 객체 배열과 배열을 선언하고 SystemObject 타입이 아니지만 암시 적으로 입력됩니다.

+1

huh? 이것은 그의 문제를 전혀 해결하지 못할 것입니다 ... –

+0

물론입니다. impliclty가 타입을 선언함으로써, 속성에 액세스하기위한 클래스를 명시 적으로 생성해야합니다. –

+0

사실 인 경우 여기에 모두 표시됩니다. http://msdn.microsoft.com/en-us/library/bb384090.aspx –