2

我想跟踪TopMost我的自定义表单中的属性更改,这些表单称为(Form). 我不能使用override, 因为TopMostis not abstractor virtual,所以我不能使用new关键字,因为它在隐式引用时不起作用。

处理此类任务的最佳方法是什么?我们可以替换任何属性TopMost,只要基类 ( Form) 既没有“更改”事件,也没有要覆盖的 ONSomething 虚拟方法,并且我们的属性没有标记为abstractor virtual

例子:

我有很多基于Form

MyForm1:Form, class MyForm2:Form, class MyForm_n:Form

一些“工厂”返回Form类型的实例

Form f = GetMyForm();

最后我做到了

f.TopMost = !f.TopMost;

交易是我不能真正使用任何其他返回类型Form GetMyForm()。除了实际的基类之外,我不能使用interface其他基类Form(实际上,没有工厂,我使用.ParentForm某些控件的属性)。

完成任务并保持代码尽可能干净的最佳方法是什么?提前致谢。

4

1 回答 1

2

听起来您可能想在具体类和Form. 那可能有一个ObservedTopMost属性或类似的东西,它委托TopMost但也引发一个事件。

需要注意的是,这在使用新属性时才有用;它不会神奇地发现其他地方对现有属性的更改。不过,这对于您的目的可能已经足够了。

于 2012-11-01T17:42:40.627 回答