C#

2010-02-10 2 views
0

의 메서드 사이에서 익명 개체 전달 및 전달 코드 블록이 익명 개체를 C#의 다른 메서드로 전달하려고하는 시나리오를 생각해보십시오.C#

ThreadPool.QueueUserWorkItem(new WaitCallback(RpvService.GetRpvDailyResults), 
          new { req = request, rpvDic = rpvDictionary } 
          ); 

가 어떻게 수신 측에서 익명 객체를받을 수 있습니다 : 여기

은 예입니다?

+1

wnat 무엇에 캐스팅 할 수 있습니다. 터플을 전달하십시오. – ChaosPandion

+0

아니면 그냥 구조체를 정의하십시오. –

답변

6

나만의 클래스 나 구조체를 정의하는 것이 훨씬 낫습니다.

익명 개체는 컴파일러에서 생성하는 클래스입니다. 문제를 야기 할 것이기 때문에 메소드간에 이것을 전달하는 것은 나쁜 생각입니다.

직접 유형을 정의 할 때 단점이 없습니다. 두 개의 객체 만 있으므로 KeyValuePair (.NET 2) 또는 Tuple (.NET 4)을 사용할 수도 있습니다.

1

MSDN에서 :

익명의 유형은 방법의 범위를 가지고있다. 익명 형식 또는 익명 형식을 포함하는 컬렉션을 메서드 경계 외부로 전달하려면 먼저 형식을 개체로 캐스팅해야합니다. 그러나 이것은 익명 형식의 강력한 입력을 무효화합니다. 쿼리 결과를 저장하거나 메서드 경계 외부로 전달해야하는 경우 익명 형식 대신 일반 명명 된 구조체 또는 클래스를 사용하는 것이 좋습니다.

0

음의 C# 4.0에서는 동적 사용할 수 있으며, 당신은 정말 이렇게 안 당신은