我需要爲模擬C#類的多繼承的最佳方式提供建議,該類需要通過支持動態進行擴展。在擴展另一個類的類上實現DynamicObject功能
我有一個類MainClass不需要依賴於DLR - 它的所有屬性和方法都是靜態編譯的。它有大量的重載操作符。它是某種DSL。
ExtendedClass基本上是一個支持C#動態的MainClass,除了所有需要重載DynamicObject的TryGetMember/TryInvokeMember的MainClass功能外,客戶端還可以在運行時對擴展屬性進行評估。
這裏有一個DynamicObject是一個類的問題,而不是一個接口。所以ExtendedClass只能從DynamicObject派生,這意味着它應該基本上覆制所有的MainClass功能。我猜這種情況並不少見(兩個類似的類,一個必須從某個系統類派生,因此不可能通過繼承另一個系統來重用功能)。有沒有比直接的方法更聰明的方式來處理這種情況:將MainClass作爲成員字段添加到ExtendedClass,複製其所有方法/屬性並簡單地將其轉發給MainClass的包含實例?
但我現在看着IDynamicMetaObjectProvider,它不會解決這個問題嗎?根據文檔,當我可以將動態添加到從另一個類繼承的類時,這是確切的情況。 –
這是,但它是很多工作。如果你想走這條路,我會對結果非常感興趣。 – jbtule
現在看看它。我的表情並不那麼複雜,希望它不會那麼難。但我認爲這需要時間。 –