对于我构建的许多应用程序,我使用一个自定义类,该类包含许多常用方法。
随着时间的流逝,该库已经变得相当广泛,现在我正尝试清理该库并为每个类别(例如常规,调试,日志记录和设置)添加子类。
当前我的课程如下:
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();
有没有办法做到这一点? 谢谢。
答案 0 :(得分:0)
除了将所有嵌套类都设置为静态(如果您需要的话,这样做是一个更好的选择),您还可以在主类“库”的构造函数中实现嵌套类“ general”。不过这有点奇怪。
另外,我认为必须注意,这不是一个完全不同的“子类”。这些是“嵌套类”。如果您要搜索“子类”并尝试将这些建议应用于您的“嵌套类”构想,则可能会在Google上获得一些非常错误的建议。
namespace Tools
{
public class Library
{
public General general;
public Library
{
general = New General();
}
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.general.updateText(...);