2010-11-19 6 views
1

나는이왜 동적으로 동적으로 빌드 된 객체에서 메소드를 호출하지 못합니까?

interface IFoo 
{ 
    int Property{get;} 
} 

내 코드는 get_Property 방법을 구축을 ::처럼 내가 인터페이스에 맞게 TypeBuilder 빌드 타입을 가지고있다. IFoo로 내 빌드 된 객체를 캐스팅하면 모든 것이 작동합니다. 그러나, 내가 동적으로 객체를 사용할 때 코드는 IFoo가 get_Property를 구현하지 않는다고 불평합니다. 왜 이런 일이 발생합니까? 런타임에 빌드 된 유형에 동적 기능을 사용할 수 없습니까?

답변

1

dynamic은 공용 API를 사용합니다. TypeBuilder을 사용하는 경우 이라는 메서드가 제공되어 해당 메서드를 구현 한 것으로 표시 할 수 있습니다.이 경우 메서드는 (필수적으로) 명시 적 인터페이스 구현이며 발견 할 수없는 개체는 dynamic입니다. dynamic을 사용하려면 아마도 PropertyBuilder과 공용 속성이 필요하며 속성 구현 메서드 이 인터페이스 구현으로 표시되어 있습니다. 비교를 위해

, dynamic은 실패 할 것이다 : 빠른 응답

class Foo : IFoo { 
    int IFoo.Property { get {return 5;}} 
} 
+0

와우, 감사합니다! 그래도 꽤 절름발이예요. 나는 내 오리 테이퍼에 대해 좀 더 연구해야한다고 생각합니다. C#을 역동적 인 언어로 강제하는 것은 정말로 어렵습니다. –

관련 문제