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

时间:2014-12-01 11:15:12

标签: c# types properties setter

我想选择设置多个类型的属性,并且很难找到解决方案。

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中对它们进行转换 - 这可能吗?

2 个答案:

答案 0 :(得分:4)

你想要什么看起来像设计错误。 在C#属性中,setter和getter总是相同的类型。所以你基本上有下一个选择:

  • 让您的媒体资源类型为object(或dynamic,如果您想要更糟糕的设计)并按照问题中的说明转换设置器中的值 - 我强烈建议您避免这种情况方法
  • 远离property概念并创建单独的方法来获取字段的值并从不同类型分配。 如果您在编译时不知道类型,这种方法将允许您分配值,而getter-method将仍然正确输入。但一般来说它仍然看起来很糟糕。
  • 在属性外部进行所有转换,此解决方案是首选。您应该知道在每个单独的案例中将使用哪种类型

答案 1 :(得分:-1)

尝试将属性类型作为对象。

public static Object PropertyName
{
    get { return PropertyName; }
    set { PropertyName = value; }
}