【发布时间】:2018-06-22 19:53:18
【问题描述】:
对于我构建的许多应用程序,我使用一个包含许多常用方法的自定义类。
随着时间的推移,这个库已经变得相当广泛,现在我正在尝试清理那个库并为每个类别添加子类,例如常规、调试、日志记录和设置。
目前我的班级是这样的:
public class General
{
public Form frmMain;
public void updateText(Control ctrl, string content)
{
if (ctrl != null && (ctrl is Label || ctrl is TextBox))
{
if (ctrl.InvokeRequired)
{
ctrl.Invoke(new MethodInvoker(delegate
{
ctrl.Text = content;
}));
}
else ctrl.Text = content;
}
}
}
我想做的是像这样转换它:
public class Library
{
public class General
{
public Form frmMain;
public void updateText(Control ctrl, string content)
{
if (ctrl != null && (ctrl is Label || ctrl is TextBox))
{
if (ctrl.InvokeRequired)
{
ctrl.Invoke(new MethodInvoker(delegate
{
ctrl.Text = content;
}));
}
else ctrl.Text = content;
}
}
}
public class Settings
{
public Form frmMain;
public void someMethod() { }
}
}
在实现中我想引用类库,例如:
Tools.Library library = new Tools.Library();
但我真的不想为每个子类实现新变量。理想情况下,我想从 Library 类中访问不同的方法。 例如:
Tools.Library library = new Tools.Library();
library.General.updateText(lblTest, "test");
library.Settings.someMethod();
有没有办法做到这一点? 谢谢。
【问题讨论】:
-
将 General 和 Settings 类设为静态(当然还有这些类中的所有方法)
-
从您发布的代码看来,您可以制作这些静态类和方法。您的构造函数没有接受任何参数,并且方法中没有引用
frmMain。一般来说,我发现如果我有一个可重用的实用程序方法,那么它很可能可以设为静态并存在于静态类中。 -
这是一个糟糕的设计......但如果你不能实现一些关注点分离,我猜上面的解决方案是不错的。
-
你试过继承吗?
Class General extends Library这样General 类就获得了Library 类的所有方法。像在代码中那样在另一个类中声明一个类并不常见 -
@BradleyDotNET 感谢您的支持 ;-) 我总是乐于接受建议,您将如何处理?