선언된 범위를 넘어 익명 유형 개체에 액세스
C#에서 익명 유형은 소스에서 추출된 속성 이름과 값을 기반으로 동적으로 생성됩니다. 그러나 이러한 개체의 범위는 개체가 선언된 블록으로 제한됩니다. 이는 다음과 같은 질문을 제기합니다: 선언된 범위 외부에서 익명 유형 객체에 어떻게 액세스할 수 있습니까?
"Cast by example" 사용(주의 사항 권장)
일반적으로 권장되지는 않지만 "cast by example"이라는 기술을 사용하면 해당 범위를 넘어서는 익명 유형 개체에 액세스할 수 있습니다. 이 핵에는 액세스하려는 익명 유형과 동일한 속성을 가진 별도의 "예제" 객체를 생성하는 작업이 포함됩니다.
구현:
public void FuncB() { var example = new { Id = 0, Name = string.Empty }; var obj = CastByExample(FuncA(), example); Console.WriteLine(obj.Name); } private object FuncA() { var a = from e in DB.Entities where e.Id == 1 select new { Id = e.Id, Name = e.Name }; return a.FirstOrDefault(); } private T CastByExample<T>(object target, T example) { return (T)target; }
주의사항:
요약하자면, "캐스트 바이 예제"를 사용하여 해당 범위를 벗어나는 익명 유형 개체에 액세스하는 것은 가능하지만 가능할 때마다 피해야 하는 위험한 관행입니다.
위 내용은 C#에서 선언된 범위 밖의 익명 형식 개체에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!