[英]Automatically make all child classes call parent's method
我目前正在重构一个大型应用程序。
有大量的Windows窗体,它们都继承自一个基本窗体。 使用Application.Run()运行第一种形式后,我无法调试任何事情。
由于代码是一团糟,因此在调试UI时我不容易遵循流程,也不知道我何时查看哪种形式。
对于我来说,有太多形式无法手动为每个方法创建一个方法,因此我想做的是在每个人都调用的父类中创建一个方法。 例如,此方法可以将表单名称打印到控制台。 通过这种方式,我可以根据导致问题的原因在源代码中创建一些文件夹结构。
关于如何使用Resharper和/或Visual Studio做到这一点的任何建议?
任何输入都非常感谢!
如果您尚未覆盖OnShown
方法,则可以将其放在基本形式中,如下所示:
public /*abstract*/ class BaseForm : Form
{
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
Console.WriteLine($"Entered {this.GetType().Name}");
}
}
当显示任何表单时,它将自动调用,并使用Reflection将类的名称打印到控制台。
据我了解和您所说,如果所有表单都从基本表单继承,则它们都具有相同的组件。 因此,您可以创建一个类似于波纹管的模块,然后放置此基本形式的方法。
'This Module you will put all methods from the base form
Module ProcAuxiliar
Public Sub BaseForm_Sum (ByVal Textbox1 As String, ByVal Textbox2 As String)
Dim Val1 As Int32 = Convert.ToInt32(Textbox1)
Dim Val2 As Int32 = Convert.ToInt32(Textbox2)
MsgBox( Convert.ToString(Val1 + Val2)
End Sub
Public Sub BaseForm_decrease (ByVal Textbox1 As String, ByVal Textbox2 As String)
Dim Val1 As Int32 = Convert.ToInt32(Textbox1)
Dim Val2 As Int32 = Convert.ToInt32(Textbox2)
MsgBox( Convert.ToString(Val1 - Val2)
End Sub
End Module
在子窗体中,只需从模块调用方法
'Child Form 1
Sub BtSumClick(ByVal sender As Object, ByVal e As EventArgs) Handles btSum.Click
ProcAuxiliar.BaseForm_Sum(Textbox1.Text, Textbox2.Text)
End Sub
'Child Form 2
Sub BtDecreaseClick(ByVal sender As Object, ByVal e As EventArgs) Handles BtDecrease.Click
ProcAuxiliar.BaseForm_decrease(Textbox1.Text, Textbox2.Text)
End Sub
在子级中重写baseform的方法,并使用更多代码调用baseform方法:
protected override sub Children_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MyBase.Children_Load(sender, e)
MyBase.BaseForm_Load(sender, e)
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.