我在這裏有一個難題,我甚至不確定這是可能的。在運行時使用動態類/屬性來加載配置
我正在開發一個基於插件的應用程序,其中所有插件都可以訪問(讀取/寫入)主機應用程序上的共享配置。有實現我提出的問題更簡單的方法,但由於這是一個與工作無關的項目,我可以自由地玩:)
比方說,我們有Plugin_A
是繼承了PluginBase
抽象類。抽象類公開IConfiguration Config
屬性,插件可以訪問該屬性以寫入此共享配置。 IConfiguration Config
由主機在加載插件時正確設置,以限制特定插件將訪問的可用配置。
我想要做的就是嘗試在C#4.0中使用Dynamic關鍵字來無縫編寫配置類。
在這裏僞C#代碼就是我想實現
public class Plugin_A: PluginBase
{
public void DoSomethingWithConfig()
{
ShowAMessageBox(Config.SomeMessage);
Config.HasShownMessage = true;
}
}
現在是什麼 - 在這個例子中,我不想實際定義.SomeMessage
和.HasShownMessage
而是讓它們是動態的,當被要求退換。
它看起來像一個伸展,但是這是可能的嗎?
就是這樣! – Timwi 2010-08-30 08:02:55
+1 @Timwi,並不意味着踩你的動態腳趾,我認爲你的意思是動態對象,但IDynamicObject(我相信它被替換爲IDynamicMetaObjectProvider,雖然我找不到這個事實的簡潔文檔)不是爲了暈倒的心臟和試圖實現GetMetaObject比任何除了編寫庫/框架之外的任何目的都需要的更加通用和更通用。 – marr75 2010-08-30 08:12:58
哇!這正是我所需要的。謝謝一堆! – 2010-08-30 08:22:11