【问题标题】:Getting the converter for the type获取类型的转换器
【发布时间】:2011-04-13 00:39:41
【问题描述】:

在 MSDN 中,我读过关于 EnumConverter 的内容:

您永远不应该创建 EnumConverter 的实例。而是调用 TypeDescriptor 类的 GetConverter 方法。有关详细信息,请参阅 TypeConverter 基类中的示例。

有人知道我自己实现的转换器的原因吗?

例如,我有 GradientColor 类和转换器 GradientColorConverter。我应该写吗

new GradientColorConverter().ConvertFrom(colorString) 

TypeDescriptor.GetConverter(typeof(GradientColor)).ConvertFrom(colorString);

其实这两种方式都可以,但是哪个更好呢?

【问题讨论】:

    标签: c# .net typeconverter


    【解决方案1】:

    我认为是后者TypeDescriptor.GetConverter(typeof(GradientColor)),因为它允许其他转换器在代码在不同上下文中运行时添加或扩展类型转换器系统(例如自定义控件在具有自己的自定义类型转换器的另一个应用程序中运行)。

    【讨论】:

    • 据我所知,类属性中指定的转换器类型。它在其他应用程序中有何不同?
    • TypeDescriptor 从类型系统(属性或默认类型转换)中读取,然后对其进行扩展以允许在运行时进行自定义。我从来没有做过,但它在文档中。看看 TypeDescriptionProvider。这将使您在更高版本的应用中重用您的课程更加容易。
    【解决方案2】:

    后者。如果您更改类型转换器类,您的代码仍然可以工作。解耦很好。

    【讨论】:

    • 你是对的,但在这种情况下,反射将用于从属性中获取转换器类型。不确定它是否好,如果我可以将转换器实例创建为静态类型。
    猜你喜欢
    • 2018-05-24
    • 1970-01-01
    • 2022-01-26
    • 2012-04-06
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多