考慮下面的代碼:在C#中,是否有辦法強制一些屬性在對象初始化器中初始化?
public class ClassA
{
public int PropertyA { get; set; }
public int PropertyB { get; set; }
}
// Somewhere else
var obj = new ClassA
{
PropertyA = 1,
// Question:
// How do we force PropertyB to be set here without making it a parameter in the constructor?
// Ideally in compile time so that the code here would cause a compile error.
};
動機:這個問題向我走來時,我試圖通過屬性,而不是在構造函數中注入依賴。
使它成爲構造函數的一部分,你不能用對象初始值設定項來做到這一點(據我所知)。 – Hristo
@Chris:這是我試圖避免的。當我們想添加新的依賴關係時,通過構造函數注入依賴關係會導致很多問題。我們必須沿着依賴關係鏈向每個構造函數添加一個新參數。 –
所以你想防止[時間耦合](http://blog.ploeh.dk/2011/05/24/DesignSmellTemporalCoupling/),但沒有原子初始化?哈哈哈......那是不可能的。 – Steven