我可能失去了一些東西很明顯這裏...系列化VS構造函數注入和保護不變
但是,當我學會欣賞IOC的榮耀和構造函數注入我有麻煩的對象圖形序列調和這一點。這兩種模式是兼容的嗎?爲什麼或者爲什麼不)?
假設有:
public class Foo
{
#region invariants
private readonly List<IBar> _bars;
private readonly Guid _id;
#endregion
public Foo(List<IBar> bars, Guid id)
{
_bars = bars.CannotBeNull("bars");
_id = id.CannotBeNull("id");
}
public List<IBar> Bars { get { return _bars; } }
//some other state I want serialized
}
public static class Ex
{
public static T CannotBeNull<T>(this T obj, string paramName = "")
{
if (null == obj) throw new ArgumentNullException(paramName);
return obj;
}
}
我想通過構造函數注入保護類不變的鐵包saftey。它給我的對象一定的東西,他們將永遠擁有他們需要的東西。注入與存儲庫模式不一致的不變量?也許有一個DTO層和一個工廠模式在某處填補了空白......?
尋找聰明的建議......兩種模式是否兼容?爲什麼或者爲什麼不)?
PS:我知道IDeserializationCallback但我看不出它如何與「私人只讀」不變有助於
正是我在尋找的東西。 – dFlat