从基本表单访问继承表单上的组件
时间:2020-03-05 18:44:06 来源:igfitidea点击:
我项目中的许多表单都是从基本表单继承的。很容易获得派生表单的Controls集合,但是我没有找到一种简单的方法来访问Components集合,因为VS将其标记为私有。
我认为这可以通过反射来完成,但是我真的不确定如何最好地做到这一点,因为以前没有进行过反射工作。
现在,我正在使用一种笨拙的解决方法,其中我重写了一个功能GetComponents并返回了我感兴趣的组件的数组。这很容易出错,因为很容易忘记实现重写的函数或者在添加组件时对其进行更新。
如果有人有任何提示或者可以提出更好的方法,我很高兴听到。
解决方案
回答
如果我们担心忘记覆盖该功能,请使其抽象化。
回答
如果将组件的Modifiers属性设置为严格保护,则可以在不使用组件集合的情况下访问它们。
编辑:
可以通过反射遍历每个字段来实现可发现性。尽管在情况下这可能不是最理想的。