我現在很抱歉,如果我即將解釋沒有足夠的意義;我爲它而聞名,儘管我試圖做其他事情。抽象基類和應用程序域
我正在寫一個服務,使用用戶定義的插件。我是嘗試使用來隔離它們 - 通過使用共享程序集中定義的接口,將它們的組件保留在服務的appdomain之外。
什麼讓我害怕抽象基類的使用。對於某些接口的所有實現來說,這些功能是通用的,所以抽象基類是有意義的。如果一個抽象基礎在服務組合中,那麼無論它的子類是什麼插件都會將它們的組件拖入服務的appdomain中。但是,服務使用的抽象基礎中有內部成員(具有內部設置者和公共獲取者的屬性),因此它需要與服務在同一個程序集中才能實現。
看來我想要的是不可能的,但我也相信這是因爲我採取了錯誤的做法。我正拼命地嘗試在此練習中更好地使用良好的模式和實踐,並一路學習。
由於接口是關鍵,我最終做的是讓抽象基類實現一個內部接口。該內部接口實現了一個公共接口,所以基類實現了公共成員和內部成員。如果一個對象是基類的子類,那麼我知道我可以訪問我可以設置的內部接口屬性。這似乎確保插件組件不在主應用程序域中! – redman 2009-12-07 16:28:19