【发布时间】:2013-08-18 12:33:41
【问题描述】:
我有一个基类,它有大量的派生类,而基类有几个构造函数。在我的所有派生类中,我必须实现空构造函数以将参数转发给基构造函数。是否有可能以某种方式告诉 C# 使用派生构造函数?
例如,如果使用这个基类。
class BaseTool
{
public BaseTool(string Arg1, string Arg2)
{
// do stuff.
}
public BaseTool(string Arg1)
{
// do stuff.
}
public BaseTool(int Arg1)
{
// do stuff.
}
}
我必须使用这些参数实现上述所有构造函数,然后调用: base(...) 将它们转发到派生类。这导致许多类具有空的构造函数。似乎有很多浪费的代码。
【问题讨论】:
-
我唯一能想到的就是制作
static方法而不是实例构造函数。例如public static T Create<T>(string Arg1, string Arg2) where T : BaseTool, new() { var instance = new T(); /* do stuff, to instance. */ return instance; }。这可以称为var newDT = BaseTool.Create<DerivedTool>("foo", "bar");。 -
@JeppeStigNielsen:如果您将其发布为答案,我会支持它:-)
-
@dtb 我作为答案发布。
标签: c# constructor