我已經持有一些屬性,我需要這些屬性之一,僅持有一些價值類如何使財產或任何持有特定數據.NET
意思,當我需要設置一個值,我需要從已定義枚舉
所以當我使用類只接受值,並在此屬性我只能從枚舉
使用值我只需要確保這個屬性不持有其他值是我不知道在我的枚舉
如果有任何解決方案,而不是使用屬性它是好的:)
我已經持有一些屬性,我需要這些屬性之一,僅持有一些價值類如何使財產或任何持有特定數據.NET
意思,當我需要設置一個值,我需要從已定義枚舉
所以當我使用類只接受值,並在此屬性我只能從枚舉
使用值我只需要確保這個屬性不持有其他值是我不知道在我的枚舉
如果有任何解決方案,而不是使用屬性它是好的:)
蔭不知道如果我理解你的權利,但你不只是想這一點:
enum MyEnum
{
MyValue1,
MyValue2
}
class Test
{
public MyEnum MyProperty { get; set; }
}
另一種方法是定義財產作爲string
或int
(或任何類型您的枚舉是基於)並檢查值是否有效根據枚舉:
string _value;
public string MyProperty
{
get{return _value;}
set {
if (Enum.GetName(typeof(MyEnum), _value)==null)
throw new ArgumentException("Unknown Value")
_value=value;
}
}
如果您使您的屬性基於整數,則可以使用Enum.IsDefined()
來檢查整數值是否對該枚舉有效。
您可能還想考慮使用C#4.0代碼合同。
有一些對象驗證庫。我想建議你NHibernate驗證器。
它可能聽起來像它與NHibernate的依賴關係,但它可以單獨使用。 NH Validator和其他人都是屬性導向的,所以你可以爲你的屬性放置一個屬性,然後通過調用一個驗證引擎,你可以確保某些對象屬性可以保持一些期望值或任何其他驗證規則。
這裏瞭解更多:
編輯:我忘了提NH驗證具有可擴展API,以便您可以實現自己的驗證規則,事實上,應該讓你感覺!
你的意思是這樣的:
public enum SomeEnum { item1, item2, item3 };
public class Myclass
{
private SomeEnum enumItem;
public SomeEnum EnumItem
{
get { return enumItem; }
set { enumItem = value; }
}
}
private int _field
public int Property
{
get{ return _field;}
set{
if (Enum.GetValues(typeof(SomeEnum))).Contains(value))
_field = value;
else
_field = 0;
}
}
非常感謝我使用它的第一個代碼,它的工作原理非常好,謝謝:) – AshOoO 2011-05-10 09:00:23