是否有方法来定义我的类,以便该类的调用者将获得编译时错误,除非他们指定了该类的每个属性,并且附加的约束条件是该参数通过命名?要求所有参数和所有参数命名的类构造函数
比方说,我有这样的接口:
public interface IPerson
{
string FirstName {get;}
string MiddleName { get; }
string LastName { get;}
}
而且这些类:
public class PersonNeedAllProperties : IPerson
{
public string FirstName { get; private set;} // ideally readonly
public string MiddleName { get; private set;}
public string LastName { get; private set;}
public PersonNeedAllProperties(
string firstName,
string lastName,
string middleName)
{
this.FirstName = firstName;
this.MiddleName = middleName;
this.LastName = lastName;
}
}
public class PersonCanNamePropertiesButNotSadlyNotRequired : IPerson
{
public string FirstName { get; set;} // ideally readonly
public string MiddleName { get; set;}
public string LastName { get; set;}
}
然后用这些恕我直言的问题如下:
是不是有一个获得一个简单的POCO对象,其初始化类似于人2,但这需要全部属性被命名?
这里是上面的小提琴:https://dotnetfiddle.net/gUk8eT#
在指定构造函数时,不能让编译器强制类的使用者命名参数。你想这么做吗? –
@EricJ:目标是避免场景1的场景。有时我们有多个字符串,混淆顺序非常简单。我的目标是尽可能让同伴创造一个bug。 – user420667
所以让所有的开发者拼出名字。好主意,因为他们喜欢额外的按键。 – Paparazzi