我有一个名为 Package
的类,在这个类中我有大约 10 个属性,我们称它们为 1,2,3,4.. 等到 10。这些属性的类型是 strings
、ints
和一些 DateTimes
。在创建 Package 的新对象时,有时我只需要属性 1,有时我需要 5、6 和 9,有时我需要 3 和 10 等等。
所以只有两个例子:new Package("bla", "bla bla",100)
或 new Package(2983)
我已经 read :
An interface looks like a class, but has no implementation. The only thing it contains are declarations of events, indexers, methods and/or properties. The reason interfaces only provide declarations is because they are inherited by classes and structs, which must provide an implementation for each interface member declared.
由于类中没有其他方法,只有一个构造函数和属性,是使用 20 个构造函数更好还是应该为这种情况创建一个接口(interface)?
编辑:
我可能应该提到我还有一些 enums
来“某种程度上”确定它是哪种 Package
。
最佳答案
界面在这里对您没有任何帮助。
如果你想强制将特定变量填充在一起,比如 1、2 和 3 应该始终填充在一起,但在另一种情况下,只需要 4 个就足够了,你可以使用单独的构造函数,或者具有创建有用名称的静态方法对象(如 CreateFromId
、CreateFromNameAndAge
)。
如果你根本不在乎,你可以简单地创建一个无参数的构造函数(或一个带有可选字段的构造函数)并使用对象初始化器设置所需的字段:
var x = new Class() { Field1 = 1, Field2 = "2" };
也许这是您在单个对象中做的太多的迹象,但如果没有关于您的类设计的实际信息,我们无法说出那么多。
如果包有不同的用途(如 ProductPackage
、PersonPackage
等),继承在这里似乎也是一个不错的解决方案。共享属性驻留在基类中,所有特定属性都可以驻留在派生类中。
关于c# - 我应该使用多个构造函数还是一个接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32818969/