2011-01-26 40 views
3

我試圖派生自Selector類,因爲我需要一個類似ListBox的功能,但它不是ListBox。 我看了一下Selector類的簽名,它是(http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.selector(v=vs.95).aspx )爲什麼選擇器類是一個內部構造器?

public abstract class Selector : ItemsControl, 
ISupportInitialize 

但問題是,構造函數是內部的。所以它不可能從這個類中派生出來(ListBox和ComboBox在這個程序集中)。

我現在從列表框中衍生實現我的目標,但我的問題是:

爲什麼選擇類的內部構造?

回答

0

因爲Selector類是abstract。你不能創建抽象類的實例,確保你甚至不能錯誤地(以一種常規的方式)做到這一點的最簡單的方法是不要使構造函數可用。

我沒有看到在MSDN上的構造函數的條目,但我敢打賭,它可能是一個protected構造函數,而不是一個internal之一。

但是從我所看到的,沒有什麼能阻止你從Selector派生出來,並創建你的自定義實現。

編輯: 反射器顯示的構造是internal着實讓沒有導出...

+0

嗨,這是不可能的。因爲如果你想從班級派生,c'tor必須是可訪問的。例如:公共抽象類MyClass的 { 私人MyClass的(){} } 公共類MySecondClass:MyClass的 { } <=不可能 – TerenceJackson 2011-01-26 12:46:34

相關問題