2010-11-19 59 views
1

我有我TypeBuilder建立相匹配的接口,這樣的:爲什麼動態調用無法在我的動態構建的對象上調用方法?

interface IFoo 
{ 
    int Property{get;} 
} 

我的代碼構建get_Property方法的類型。如果我將構建的對象作爲IFoo投射,則一切正常。但是,當我將該對象用作動態代碼時,代碼會抱怨我的IFoo沒有實現get_Property。爲什麼會發生這種情況,我可以不使用運行時構建的類型的動態功能嗎?

回答

1

dynamic使用公共API。如果您使用的是TypeBuilder,您可能有只是提供了一種方法並將其標記爲實現該方法,在這種情況下它(實質上)是明確的接口實現,並且dynamic不可發現。要使用dynamic它可能需要PropertyBuilder和一個公共屬性,屬性實現方法標記爲接口實現。

爲了比較,dynamic也將失敗:

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

哇,感謝您的快速響應!這是非常該死的跛腳。我想我必須在我的鴨嘴錐上做更多的工作。我猜它很難迫使C#成爲一種動態語言。 – 2010-11-19 05:23:36