2012-09-23 38 views

回答

2

你不能。它會破壞Liskov's Substitution Principle。如果DraggableBorder派生自Border,我希望能夠像使用Border一樣使用它。

畢竟,別人也可以這樣寫:

Border border = new DraggableBorder(); 
border.Child = ...; 

你如何期望編譯器停止?

0

您可以通過定義一個新的私有成員

public class DraggableBorder : Border 
{ 
    private new object Child {get;set;} 
} 

這樣編譯器會阻止您訪問原始子屬性

DraggableBorder myBorder = ...; 
myBorder.Child ; // this will result in a compiler error 

隱藏原始兒童然而,這是因爲你沒有真正的保護可以很容易地解決它

((Border)myBorder).Child; // this will be ok 
Border myBaseBorder = myBorder; 
myBaseBorder.Child; // this will be ok 
相關問題