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