代码之家  ›  专栏  ›  技术社区  ›  Bradley Smith

控制对基类上的子控件的访问?

  •  0
  • Bradley Smith  · 技术社区  · 14 年前

    让我在这个问题的前面声明,我通常不会宽恕将继承原则应用于用户界面设计的做法;也就是说,开发特定于应用程序的 Form UserControl 使用许多子控件,并在添加控件或更改基类上控件布局的子类中扩展此控件。它有时看起来是一个优雅的设计解决方案,但它很少这样做。。。

    我知道实现这一点的主要方法是使用(默认值) private 为子控件声明成员变量时的访问修饰符;但是,这不会阻止子类访问其基类上的控件,如下所示:

    base.Controls["someControl"].Text = "Look, I vandalised your control";
    

    Controls 使用属性 new 也不能解决问题(因为子类可以将其基类型转换回 Control

    那么,您建议使用哪些技术来保护(某些)子控件不被这种方式操纵?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Henk Holterman    14 年前

    任何超越 private 会显得过分。紧挨着 Controls

    访问修饰符 私有的

    所以你最好的解决办法就是和你的程序员谈谈。