我想选择设置多个类型的属性,并且很难找到解决方案。
public static PropertyType Property
{
get { return Property;}
set {
if (value.GetType() == typeof(PropertyType))
{
Property = value;
}
//Or any other type
if (value.GetType() == typeof(string))
{
Property = FunctionThatReturnsPropertyType(value);
}
}
}
我希望这是有道理的,我只是将属性设置为一种类型,但我希望能够使用其他类型分配它,然后在setter中对它们进行转换 - 这可能吗?
答案 0 :(得分:4)
你想要什么看起来像设计错误。 在C#属性中,setter和getter总是相同的类型。所以你基本上有下一个选择:
object
(或dynamic
,如果您想要更糟糕的设计)并按照问题中的说明转换设置器中的值 - 我强烈建议您避免这种情况方法 property
概念并创建单独的方法来获取字段的值并从不同类型分配。 如果您在编译时不知道类型,这种方法将允许您分配值,而getter-method将仍然正确输入。但一般来说它仍然看起来很糟糕。 答案 1 :(得分:-1)
尝试将属性类型作为对象。
public static Object PropertyName
{
get { return PropertyName; }
set { PropertyName = value; }
}