我一直在寻找一段时间,因为我自然健忘,我认为这会很好地构建一些东西(抽象类,接口等?),这会迫使我实现某些代码位我正在写一个班。C#:使用抽象类强制构造函数签名?
特别是,我想强制一个新的类总是有一个构造函数,它将一个单独的参数类型化为自身,以便更容易地重复对象。我在其他地方看到过有关这方面的文章/问题,但我不确定这个问题是否被问到(至少我能找到),或者我对其他文章/问题没有足够的理解来实现它。我提前道歉。
我不想在抽象类,接口等中有构造函数,实际上做任何事情。我只想定义派生类中构造函数签名的要求。
我理想的课堂应该是这样的:
public class GoodClass
{
public GoodClass(GoodClass goodClass)
{
// copy components of goodClass to this instance
}
}
于是,我第一次开始研究接口,也开始在抽象类阅读起来。我在想像下面的代码会起作用,但唉,我得到的错误。我试图做甚至可能吗?有没有其他方法可以在我的显示器上贴上便条,从而实现我的目标? :)
abstract class SelfConstructor
{
abstract public SelfConstructor(SelfConstructor) { }
}
class NewClass : SelfConstructor
{
//Required by SelfConstructor:
public NewClass(NewClass newClass)
{
// copy components of newClass to this instance
}
}
克隆方法很好,但实际上Microsoft建议不要实现ICloneable,主要是因为如果克隆深度较浅或接口较浅时,接口不会处于任何状态。 – 2014-09-29 22:11:16
@AdiLester这完全是真的,“克隆”可以做你想做的任何事情。如果你遵循语义,它基本上是一个复制操作的接口。 – BradleyDotNET 2014-09-29 22:12:35
...以及[MSDN](http://msdn.microsoft.com/en-us/library/system.icloneable%28v=vs.110%29.aspx)中的引用:“因为Clone的调用者不能取决于执行可预测克隆操作的方法,我们建议ICloneable不能在公共API中实现。“ – 2014-09-29 22:13:55