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

C# 控制对基类上的子控件的访问?,c#,winforms,inheritance,user-controls,C#,Winforms,Inheritance,User Controls,在回答这个问题之前,我要指出,我通常不会宽恕将继承原则应用于用户界面设计的做法;也就是说,开发一个特定于应用程序的表单或用户控件,并在子类中对其进行扩展,这些子类添加控件或更改基类上控件的布局。它有时看起来像是一个优雅的设计解决方案,但它很少以这种方式工作 考虑到这一点,我有一个关于在上述场景中控制对儿童控件的访问的问题;是否有安全的方法防止子类访问/修改基类上的子控件 我知道实现这一点的主要方法是在声明子控件的成员变量时使用(默认)privateaccess修饰符;但是,这不会阻止子类访问其基

在回答这个问题之前,我要指出,我通常不会宽恕将继承原则应用于用户界面设计的做法;也就是说,开发一个特定于应用程序的
表单
用户控件
,并在子类中对其进行扩展,这些子类添加控件或更改基类上控件的布局。它有时看起来像是一个优雅的设计解决方案,但它很少以这种方式工作

考虑到这一点,我有一个关于在上述场景中控制对儿童控件的访问的问题;是否有安全的方法防止子类访问/修改基类上的子控件

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

base.Controls["someControl"].Text = "Look, I vandalised your control";
混淆控件的名称效果甚微,尝试使用
new
隐藏
controls
属性也无法解决问题(因为子类可以将其基类型转换回
Control
并以这种方式访问属性)。请注意,当从类的作用域之外访问控件时,此问题也适用-您所需要的只是对控件/窗体的引用,然后您可以根据自己的内心内容修改子控件


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

任何超出
private
的操作都会显得过分。在
控件
属性旁边也总是有反射

访问修饰符
private
与安全无关,它是一种组织工具。把它看成是一个高高的篱笆。 因此,最好的解决方案是与程序员交谈