我想选择设置具有多个类型的属性,并且正在努力寻找解决方案.
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);
}
}
}
我希望这是有道理的,我只是将Property设置为一种类型,但是我希望能够将其分配给其他类型,然后在setter中进行转换-这可能吗?
解决方法:
您想要的东西看起来像是设计错误.
在C#属性中,setter和getter始终具有相同的类型.因此,您基本上有下一个选择:
>使您的属性类型对象(或动态属性,如果您想获得更差的设计)并按照问题中的说明在设置器中转换值-我强烈建议您避免这种方法.
>摆脱属性概念,创建单独的方法来获取字段的值并从不同类型进行赋值.如果您在编译时不知道类型,则此方法将允许您分配值,而getter方法仍将正确键入.但总的来说,它看起来仍然像是糟糕的设计.
>在属性外进行所有转换,首选此解决方案.您应该知道每种情况下将使用哪种类型.