none
不显示被继承的控件的属性 RRS feed

  • 问题

  • 比如说我的控件A是继承UserContrl来的,
    UserContrl有很多的属性和方法,
    我希望别人用我的控件A的时候,只能 .点出我的方法,而不要显示那一大堆默认的方法属性比如GetType之类的。
    该怎么隐藏呢?
    3KS~~ 
    2009年9月24日 9:34

答案

  • 您好,不推荐这么做。

    首先会破坏封装性,违反面向对象的原则。

    其次在c#中也办不到这点,即使使用了private、protected、new 等也是无法阻止显示在父类中定义为public的方法和属性。
    调用时,会调用父类的方法或属性。
    2009年9月24日 12:25
  • 的确是不应该隐藏基类提供的公共方法和属性的,失去了继承的意义,容易给使用这个类的程序员造成困惑!
    周雪峰
    2009年9月24日 14:01
    版主
  • 你好,你的这个想法与面向对象的思想相违背了,子类必需可以访问父类的属性和方法。
    jon.valett@gmail.com
    2009年9月27日 1:32
    版主

全部回复

  • 尝试这样看看
    重写继承类所有方法为私有方法再调用base.方法

    2009年9月24日 9:48
  • 你好!
         可以把属性定义成private或protected
    周雪峰
    2009年9月24日 10:27
    版主
  • 您好,不推荐这么做。

    首先会破坏封装性,违反面向对象的原则。

    其次在c#中也办不到这点,即使使用了private、protected、new 等也是无法阻止显示在父类中定义为public的方法和属性。
    调用时,会调用父类的方法或属性。
    2009年9月24日 12:25
  • 的确是不应该隐藏基类提供的公共方法和属性的,失去了继承的意义,容易给使用这个类的程序员造成困惑!
    周雪峰
    2009年9月24日 14:01
    版主
  • 呵呵。不建议这样做啊。
    做最好的自己
    2009年9月26日 14:40
  • 你好,你的这个想法与面向对象的思想相违背了,子类必需可以访问父类的属性和方法。
    jon.valett@gmail.com
    2009年9月27日 1:32
    版主
  • 如果用继承的话就不应该尝试去隐藏基类的公共成员。

    对于你的情况,是不是可以把你的方法封装为接口,让别人通过接口来访问自定义控件。
    2009年9月27日 4:31