我有一個類似的問題this other post我有類集合
public class MyClass
{
// other properties
public bool IsDefault { get; internal set; }
}
和我有一樣
public class MyCollection : ICollection<MyClass>
{
private List<MyClass> _itemList = new List<MyClass>();
public void SetAsDefault(MyClass item)
{
// Make sure no other items are default.
_itemList.ForEach(x => x.IsDefault = false);
// Set specified item as default.
_itemList.Find(x => x.Equals(item)).IsDefault = true;
}
}
我想定義的集合類中設置一個得到,只是一個對象屬性以確保只有MyCollection
中的單個項目被標記爲默認值,同時能夠直接在MyClass
上檢查是否有特定實例是默認值。標記設置爲MyClass.IsDefault
的設置爲internal
程序集外部的開發人員無法設置IsDefault
。然而,就我而言,我想避免多次設置IsDefault
屬性的開發人員可以訪問程序集內部,因此僅使用internal
是不夠的。
有沒有聰明的解決方案來解決這個難題?我在這裏完全不知所措......
改爲從ObservableCollection派生,然後密封MyCollection。你會做一些工作,但大部分事情都在掌控之中。 –
你可以創建一個靜態屬性'public static MyClass DefaultInstance;'並設置它。這將採取當前的默認實例。 –
你強加一個相當弱的合約,只有一個項目實際上可以成爲默認項目。另外,一件物品可能是一件收藏品的默認品,而不是其他品種的可以設想的嗎?在這種情況下,將默認值存儲爲集合的屬性可能會更好嗎? – TheInnerLight