【发布时间】:2013-02-23 15:00:06
【问题描述】:
我有两个表单 A 和 B,我将使用它们将信息输入到 XML 文件中。现在,这两种形式将不得不调用一些基本相同的方法(相同的名称,相同的实现)。
我不能在这种情况下使用基类,因为 Form A 和 Form B 已经继承自 System.Windows.Forms.Form。我应该只使用这两种形式将实现的接口吗?我怀疑这将是最好的方法,因为他们需要的方法是相同的。
您能建议一个更好的方法吗?
谢谢。
【问题讨论】:
我有两个表单 A 和 B,我将使用它们将信息输入到 XML 文件中。现在,这两种形式将不得不调用一些基本相同的方法(相同的名称,相同的实现)。
我不能在这种情况下使用基类,因为 Form A 和 Form B 已经继承自 System.Windows.Forms.Form。我应该只使用这两种形式将实现的接口吗?我怀疑这将是最好的方法,因为他们需要的方法是相同的。
您能建议一个更好的方法吗?
谢谢。
【问题讨论】:
您可以创建一个类来存储项目中的常用函数。您可以以任何形式调用这些函数。
namespace ProjectNameSpace
{
public class GenericFunctions
{
public static void WriteToXML()
{
// come code here
}
}
}
【讨论】:
绝对可以引入一个Form A和Form B继承自的base form:
public partial class BaseForm : System.Windows.Forms.Form
{
public BaseForm()
{
InitializeComponent();
}
public void CommonMethod()
{
}
}
public partial class FormA : BaseForm
{
public Form1()
{
InitializeComponent();
}
private void LocalMethod()
{
CommonMethod();
}
}
public partial class FormB : BaseForm
{
public Form1()
{
InitializeComponent();
}
private void LocalMethod()
{
CommonMethod();
}
}
也就是说,如果您的通用代码不涉及任何与 UI 相关的内容,那么@Gian Acuna 有正确的答案,您可以使用静态方法创建一个单独的类。
【讨论】:
为了代码重用并遵循所谓的“DRY”原则,您需要进行“EXTRACT CLASS”重构以避免代码重复。
如果上面的句子看起来如此通用,那么用外行的话来说,创建一个实用程序类,如果您不想以不同的形式有不同的实现并将代码移动到实用程序静态类,那么它是完美的候选者。
public static class Utility
{
public static void WriteToXML()
{
// come code here
}
}
【讨论】: