我在 Windows 窗体应用程序上工作了很长一段时间,我真的发现自己在 GUI 代码中进行的类型转换比在底层业务代码中进行的类型转换要多。
如果您看到 ComboBox 控件接受一些模糊的“对象”作为它的项目,那么我的意思就很明显了。 然后你离开并可能显示一些 DisplayMember 和一个 ValueMember 等等。
如果我想稍后检索该值,我需要将我的对象类型转换回原来的样子。就像字符串获取值一样
string value = (string)combobox1.SelectedItem;
既然 Framework 中有泛型已经有一段时间了,我仍然想知道为什么标准工具箱中没有一个控件是泛型的。
我还发现自己一直在使用 ListViewItems 上的 .Tag 属性来保留显示的域对象。但每次我需要访问该对象时,我都需要另一个类型转换。
为什么我不能只用 ListViewItem 类型的项目创建 ComboBox 或 ListView
我是不是漏掉了什么,或者这只是又一个没有经过深思熟虑的控件的例子?
最佳答案
虽然对“未使用泛型”的批评不能公平地应用于在它们存在之前开发的控件......人们必须对 WPF 控件感到疑惑(.NET 3.0 中的新控件,在 .NET 2.0 中的泛型之后)。
我检查了 AddChild ComboBox 中的方法.它需要一个对象参数 (ugh)。
此控件旨在主要通过 XAML 使用。这样做是因为无法在 XAML 中指定类型参数吗? (另外,没有办法在 XAML 中指定类型参数吗?)
很抱歉没有明确的“为什么”答案,只是分享在使用 UI 时需要转换的常见痛苦。
关于c# - .NET 中的强类型控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/331357/