Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 强制我的属性仅接受某些类型的数据类型_C# 4.0 - Fatal编程技术网

C# 4.0 强制我的属性仅接受某些类型的数据类型

C# 4.0 强制我的属性仅接受某些类型的数据类型,c#-4.0,C# 4.0,我希望我的属性值只接受并返回someEnum枚举器中指定的数据类型。我正在使用vs2012您是否尝试过以下方法: public object Value { get { return _value; } set { _value = value; } } public enum someEnum {

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

您是否尝试过以下方法:

 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
      }

我尝试使用enum,它可以工作,但我必须硬编码enum值,如“System.String”,并在set修饰符中使用enum.TryParse

public someEnum Value
{
 get; set;
}

在看了这个之后,我可以问一下:为什么需要这个?我需要我的属性只接受我们在枚举器中列出的某些类型的数据类型。好的-但是看起来你可能正在向“不同”的方向移动。不管怎样,你看到我建议的解决方案了吗?
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;
    }
}