强制我的属性只接受某些类型的数据类型

时间:2013-02-11 19:05:00

标签: c#-4.0

 public object Value
    {
        get
        {
            return _value;
        }
        set
        {

            _value = value;
        }
    }

   public enum someEnum
      {
         sString = 1,
         sBoolean = 2,
         sInt     = 3,
         sDate    = 4
         sData    = 5  //Custom data type eg; a class
      }

我希望我的属性值接受并仅返回someEnum枚举器中指定的数据类型。我正在使用vs2012

2 个答案:

答案 0 :(得分:0)

你试过这个:

public someEnum Value
{
 get; set;
}

答案 1 :(得分:0)

我尝试使用枚举,它可以工作,但我必须硬编码枚举值,如" System.String"并在set修饰符中使用了Enum.TryParse。

MyEnum type;
bool res = Enum.TryParse<MyEnum>(Convert.ToString(value.GetType()), out type);

恕我直言,使用扩展方法看起来更好

private object _value;
public object Value
{
    get
    {
        return _value;
    }
    set
    {
        if (value.IsValidType())
            _value = value;
        else
            throw new Exception("Not a valid type");
    }
}

public static class ObjectExtenstions
{
    public static bool IsValidType(this object obj)
    {
        if (obj.GetType() == typeof(System.String) || obj.GetType() == typeof(System.Int32))
            return true;
        return false;
    }
}