簡體   English   中英

通過 MEF 導入在子類中設置繼承的屬性

[英]Set an inherited property in a sub-class via MEF import

我正在嘗試通過 MEF 導入在子類中設置繼承的屬性。 基類聲明了一個屬性,但沒有指定導入。 然后應該將多個子類導入到這個屬性中——每個子類都使用自己的導入規范。

這如下圖所示:

class BaseClass
{
    public SomeType SomeProperty { get; set; }
}

class SubClass : BaseClass
{
    [Import(...)] // declaring a new property and importing here is easy
    public AnotherType AnotherProperty { get; set; }

    // how can I MEF import into the inherited SomeProperty?
}

我找到的唯一解決方案是:

  1. 在 BaseClass 中將 SomeProperty 設為虛擬,並在子類中重新聲明/覆蓋它。 這具有潛在地重復子類中的代碼的缺點。 我實際上不想重新聲明該屬性,只需指定一個導入
  2. 將 SomeProperty 與子類中的另一個屬性包裝起來,該屬性本質上是傳遞 setter 並導入其中。 這看起來很丑陋。
  3. 在設置 SomeProperty 的子類上使用具有相應導入屬性的構造函數。 如果以這種方式繼承和設置的屬性數量越來越大,這不是一種理想的方法。

任何關於簡單和干凈方法的幫助或想法將不勝感激。

總是有使用RegistrationBuilder 的選項,我相信你會在網上找到使用示例。

基本上,它允許您將導出/導入的規范與您創建的類/類型分離。 在你的情況下:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM