.NET中的强类型控件

Tig*_*ine 8 .net c# generics winforms

我正在开发一个Windows Forms应用程序已经有一段时间了,而且我发现自己在GUI代码中做了比在基础业务代码中做的更多的类型转换.

如果你看ComboBox控件接受一些模糊的"对象"作为它的项目,我的意思变得明显.然后你会离开并显示一些DisplayMember和ValueMember等等.

如果我想稍后检索该值,我需要将我的对象强制转换回原来的状态.就像字符串获得价值一样

string value = (string)combobox1.SelectedItem;
Run Code Online (Sandbox Code Playgroud)

由于框架中存在泛型相当长一段时间,我仍然想知道为什么在地狱中没有标准工具箱中的一个控件是通用的.

我也发现自己一直在ListViewItems上使用.Tag属性来保留显示的域对象.但每次我需要访问该对象时,我需要另一个类型转换.

为什么我不能用ListViewItem类型的项创建一个ComboBox或ListView

我在这里遗漏了什么,或者这只是通过控制没有完美考虑的另一个例子?

Amy*_*y B 3

虽然“没有使用泛型”的批评不能公平地应用于在其存在之前开发的控件...人们一定想知道 WPF 控件(.NET 3.0 中的新控件,在 .NET 2.0 中的泛型之后)。

我检查了ComboBox中的AddChild方法。它需要一个对象参数(呃)。

该控件主要通过 XAML 使用。这样做是因为无法在 XAML 中指定类型参数吗?(另外,有没有办法在 XAML 中指定类型参数?)

很抱歉没有明确的“为什么”答案,只是分享使用 UI 时需要投射的常见痛苦。