c#제14장 동적 매개 변수로 확장 방법 동적 코드의 제약을 깊이 이해하다

985 단어
   class DynamicExtensionMethods
    {
        static void Main()//                   
        {
            dynamic size = 5;
			// 5
            var numbers = Enumerable.Range(10, 10);
			//{System.Linq.Enumerable.RangeIterator}
            // Error: extension methods can't be dynamically dispatched
            // var error = numbers.Take(size);
            var workaround1 = numbers.Take((int) size);
			//{System.Linq.Enumerable.TakeIterator}
            var workaround2 = Enumerable.Take(numbers, size);
			//{System.Linq.Enumerable.TakeIterator}
        }
    }

확장 방법을 동적으로 처리할 수 없습니다. 컴파일러는 호출점 내부에서 호출된 상하문을 생성합니다.특히 컴파일러가 알고 있는 정적 형식을 호출합니다.그러나 현재 C# 버전에서는 호출된 원본 파일에서 using 명령이 어떤 명칭 공간을 도입했는지 알 수 없습니다.즉, 실행할 때 어떤 확장 방법이 사용할 수 있는지 모른다는 것이다.동적 값의 확장 방법을 호출할 수 없습니다. 동적 값을 매개 변수로 확장할 수 없습니다.컴파일러는 두 가지 변통 방안을 추천한다.어떤 재부팅을 사용하는지 알면 방법 내에서 동적 값을 정확한 형식으로 변환할 수 있습니다.또는 확장 방법이 있는 정적 유형을 알고 있다면 일반적인 정적 방법처럼 호출할 수 있다.출력 없음

좋은 웹페이지 즐겨찾기