문제

Anders에 따르면 C#4.0에서는 동적 유형 또는 "정적 유형이 동적 인"객체를 얻을 것입니다. 이를 통해 메소드 호출 해상도는 컴파일 시간이 아닌 런타임에 발생할 수 있습니다. 그러나 동적 대상을 일종의 계약에 묶는 시설이있을 것입니다 (따라서 유효하지 않을 가능성이 없다는 것을 알고 있더라도 전화를 허용하지 않고, 그에 대한 지능을 다시 얻을 수 있습니다).

즉, 그냥 대신

dynamic foo = GetSomeDynamicObject();

다음과 같이 알려진 계약으로 제한하도록 캐스트하거나 전환 할 수 있습니다.

IFoo foo2 = foo.To<IFoo>;

또는 그냥

IFoo foo2 = foo as IFoo;

C#4.0의 기존 자료에서 그런 것을 찾을 수는 없지만 동적 패러다임의 논리적 확장처럼 보입니다. 더 많은 정보가있는 사람이 있습니까?

도움이 되었습니까?

해결책

나는 오리 타이핑과 실제로 비슷한 것을 알지 못합니다. 두려워합니다. 나는 아이디어에 대해 블로그를 작성했습니다, 그러나 나는 어떤 지원도 기대하지 않습니다. 반사를 사용하는 것은 너무 어렵지 않을 것입니다. 이상적이지는 않지만 스톱 갭 일 수 있습니다.

다른 팁

그것은 멋진 아이디어입니다. 내가 당신을 이해한다면, 당신은 CLR의 기능을 설명/제안하는 것입니다. 여기서 인터페이스에 동적 객체를 시도 할 때 동적 객체가 지원하는 메소드/속성을 살펴보고 그것이 어떤 것이 있는지 확인해야합니다. 해당 인터페이스를 효과적으로 구현하십시오. 그런 다음 CLR은 객체에서 'IFOO 구현'을 처리하므로 동적 개체를 IFOO에 시전 할 수 있습니다. 그것이 뒷받침되지 않을 것이라는 것은 거의 확실하지만 흥미로운 아이디어입니다.

Tobias Hertkorn이 내 질문에 대답했습니다 여기 그의 링크와 함께 블로그 게시물 MetaObject에서 Convert () 메소드를 사용하여 동적 프록시를 반환하는 방법의 예를 보여줍니다. 그것은 본다 매우 유망한.

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