2012-09-23 33 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 
相关问题