实现自定义TypeConverter

时间:2013-03-04 20:26:10

标签: c# .net system.componentmodel typedescriptor

我有一个非常简单的场景,我只想扩展System.ComponentModel.BooleanConverter的功能,以便它允许多个选项,而不仅仅是truefalse

因此,例如yes1on等值与true相同。

我尝试覆盖GetStandardValues()方法进行快速测试,我的假设是如果我返回了所有特定值的集合,那么对IsValid(string)的调用应返回true我传入了我定义的一个值,但事实并非如此。我是否必须实现/覆盖一大堆废话才能做到这一点?

我想知道它是否值得,因为我真正需要的是IsValid()功能。或者也许比首先使用TypeDescriptors有更好的选择?

1 个答案:

答案 0 :(得分:2)

如果您“只需要IsValid功能”,则应该足以覆盖它。但是,实际上CanConvertFrom(Type)实际上是您应该覆盖的方法,如果您只是想测试是否可以转换类型。某些基础结构类使用此方法,在这种情况下,仅覆盖IsValid可能还不够。

对于布尔转换器,您还应该覆盖ConvertFrom(object),如果您不打算使用该值,则只返回null。否则,调用IsValid(进而调用CanConvertFrom)可能会失败。