在我看来,实现隐式运算符与 TypeConverter 似乎非常容易,因此我假设它们并不等效,因为框架中 TypeConverters 的流行(请参阅扩展 FrameworkElement 的任何内容)。
但为什么?创建 string->object 和 object->string 隐式运算符并在序列化(XML 和 XAML)中利用这些运算符不是更容易吗?
是亚格尼吗?单一责任?因为您无法在接口中指定运算符重载?
类型转换器比看起来复杂得多;类型转换器可以访问有关该类型的一系列元数据context转换的信息 - 例如,涉及的属性和对象。这用于为每个场景提供自定义选项(想想:链接的下拉菜单,即国家/县/城市/等)。您还可以在每个属性的基础上指定类型转换器,我在很多地方使用它来提供对各种字符串属性的不同处理。运算符会同等对待所有字符串。
隐式运算符只知道value正在转换,但具有更强大的编译时支持。
或者另一种方式:TypeConverter
是具有框架支持的框架功能;
运算符(主要)是具有语言支持的语言功能
要添加更多 - 类型转换器(尽管有名称)不只是转换:
- 它们提供子属性元数据(想想:扩展属性
PropertyGrid
)
- 他们建议一种类型的可用选项(想想:下拉选项
PropertyGrid
)
请注意,它们不仅仅用于更多地方PropertyGrid
,不过;-p
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)