我有一个非常简单的场景,我只想扩展System.ComponentModel.BooleanConverter
的功能,以便它允许多个选项,而不仅仅是true
和false
。
因此,例如yes
,1
,on
等值与true
相同。
我尝试覆盖GetStandardValues()
方法进行快速测试,我的假设是如果我返回了所有特定值的集合,那么对IsValid(string)
的调用应返回true
我传入了我定义的一个值,但事实并非如此。我是否必须实现/覆盖一大堆废话才能做到这一点?
我想知道它是否值得,因为我真正需要的是IsValid()
功能。或者也许比首先使用TypeDescriptors
有更好的选择?
答案 0 :(得分:2)
如果您“只需要IsValid
功能”,则应该足以覆盖它。但是,实际上CanConvertFrom(Type)
实际上是您应该覆盖的方法,如果您只是想测试是否可以转换类型。某些基础结构类使用此方法,在这种情况下,仅覆盖IsValid
可能还不够。
对于布尔转换器,您还应该覆盖ConvertFrom(object)
,如果您不打算使用该值,则只返回null
。否则,调用IsValid
(进而调用CanConvertFrom
)可能会失败。