如何制作属性或任何内容来保存特定数据 .net
本文关键字:保存 数据 net 何制作 属性 任何内 | 更新日期: 2023-09-27 17:56:01
我有一个保存一些属性的类,我需要其中一个属性来保存一些值
意思是当我需要设置一个值时,我只需要接受来自已定义枚举的值
所以当我使用类和此属性时,我只能使用枚举中的值
我只需要确保此属性不包含我在枚举中不知道的其他值
如果除了使用属性之外还有其他解决方案,那可以:)
我不确定我是否正确理解你,但你不是简单地想要这个:
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 代码协定。
private int _field
public int Property
{
get{ return _field;}
set{
if (Enum.GetValues(typeof(SomeEnum))).Contains(value))
_field = value;
else
_field = 0;
}
}
你的意思是:
public enum SomeEnum { item1, item2, item3 };
public class Myclass
{
private SomeEnum enumItem;
public SomeEnum EnumItem
{
get { return enumItem; }
set { enumItem = value; }
}
}
有一些对象验证库。我想建议你NHibernate验证器。
这听起来像是与NHibernate有依赖关系,但它可以独立使用。
NH Validator 和其他属性是面向属性的,因此您可以为属性放置属性,然后,通过调用验证引擎,您将能够确保某些对象属性将包含一些预期值或任何其他验证规则。
在此处了解更多信息:
- http://nhforge.org/wikis/validator/nhibernate-validator-1-0-0-documentation.aspx
编辑:我忘了提到NH验证器有一个可扩展性API,所以你可以实现自己的验证规则,事实上这对你来说应该是有意义的!