实现自定义TypeConverter
本文关键字:TypeConverter 自定义 实现 | 更新日期: 2023-09-27 18:02:05
我有一个非常简单的场景,我只想扩展System.ComponentModel.BooleanConverter
的功能,这样它将允许多个选项,而不仅仅是true
和false
。
因此,例如yes
、1
、on
等值与true
相同。
我尝试重写GetStandardValues()
方法来进行快速测试,我的假设是,如果我返回了所有特定值的集合,那么如果我传入了我定义的值之一,那么对IsValid(string)
的调用应该返回true
,但事实并非如此。我必须实现/覆盖一大堆垃圾才能做到这一点吗?
我想知道这是否值得,因为我真正需要的只是IsValid()
功能。或者,也许有一个比最初使用TypeDescriptors
更好的选择?
如果你"只需要IsValid
功能",那么只覆盖它就足够了。然而,在实践中,如果你只是想测试类型是否可以转换,CanConvertFrom(Type)
实际上是你应该覆盖的方法。这种方法被一些基础结构类使用,在这种情况下,仅仅重写IsValid
可能是不够的。
对于布尔转换器,您还应该覆盖ConvertFrom(object)
,如果您不打算使用该值,则只返回null
。否则,调用IsValid
(它又调用CanConvertFrom
(可能会失败。