문제

익명의 결과 객체를 반환하는 함수의 결과를 살펴 보려고합니다.

public static object getLogoNav()
{
  XDocument loaded = XDocument.Load(HttpContext.Current.Request.MapPath("~/App_Data/LOGO_NAV_LINKS.xml"));

  var query = from x in loaded.Elements().Elements()
              select new
              {
                 Name = x.FirstAttribute.Value,
                 Value = x.Value
              };

  return query;
}

CodeBehind 페이지 :

  var results = Common.getLogoNav();
  foreach(var nav in results) {
     string test = nav.Name;
  }
도움이 되었습니까?

해결책

C# 3의 리턴 유형으로 익명의 클래스를 가질 수 없으며 (그 문제의 경우 4 개) 객체를 익명 유형으로 시전 할 수 없습니다. 세 가지 옵션은 다음과 같습니다.

  • 익명 클래스의 범위 내에서 루프를 수행합니다 (대부분은 이것이 방법입니다)
  • 객체에 캐스팅하고 반사를 사용합니다 (표현 트리 마법을하지 않으면 느리고 쉽지 않습니다)
  • 명명 된 클래스로 변환하고 반환 및 인스턴스.
  • (C# 4에서) 동적 유형 마법을 만들어 비슷한 효과를 얻을 수 있지만 일부 구문 설탕으로 옵션 2와 실제로 동일합니다.

다른 팁

Jon Skeet은 썼습니다 기입 익명 유형을 반환하는 것에 대해. 나는 당신이 그것을 사용하지 않기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top