是否有方法來定義我的類,以便該類的調用者將獲得編譯時錯誤,除非他們指定了該類的每個屬性,並且附加的約束條件是該參數通過命名?要求所有參數和所有參數命名的類構造函數
比方說,我有這樣的接口:
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