如何制作属性或任何内容来保存特定数据 .net

本文关键字:保存 数据 net 何制作 属性 任何内 | 更新日期: 2023-09-27 17:56:01

我有一个保存一些属性的类,我需要其中一个属性来保存一些值

意思是当我需要设置一个值时,我只需要接受来自已定义枚举的值

所以当我使用类和此属性时,我只能使用枚举中的值

我只需要确保此属性不包含我在枚举中不知道的其他值

如果除了使用属性之外还有其他解决方案,那可以:)

如何制作属性或任何内容来保存特定数据 .net

我不确定我是否正确理解你,但你不是简单地想要这个:

enum MyEnum 
{
  MyValue1,
  MyValue2
}    
class Test
{
  public MyEnum MyProperty { get; set; }
}

另一种方法是将属性定义为 stringint(或枚举基于的任何类型),并根据枚举检查该值是否有效:

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,所以你可以实现自己的验证规则,事实上这对你来说应该是有意义的!