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

4

2 回答 2

0

你有没有试过这个:

public someEnum Value
{
 get; set;
}
于 2013-02-11T19:07:09.397 回答
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;
    }
}
于 2013-02-11T19:37:44.057 回答