c#-在属性设置器中采用多种类型

我想选择设置具有多个类型的属性,并且正在努力寻找解决方案.

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方法仍将正确键入.但总的来说,它看起来仍然像是糟糕的设计.
>在属性外进行所有转换,首选此解决方案.您应该知道每种情况下将使用哪种类型.

上一篇:javascript-精细的上传验证集


下一篇:python-从lxml.objectify.IntElement获取str或int