C# 带有单选按钮/文本框/组合框/日期时间选择器的公共因子

C# 带有单选按钮/文本框/组合框/日期时间选择器的公共因子,c#,return-value,C#,Return Value,我有多个控件,每个控件都有不同数量的控件。我没有尝试将每个控件的“值”序列化为带有控件名和控件“状态”的xml 是否有一种通用的因素或常规方法,可以在不使用case语句的情况下以通用的方式获取这些不同的“State”单词。没有,而且有充分的理由——所有这些数据值都有不同的类型,并且由子类定义(因此它们不是由公共接口定义的) 为了便于讨论,让我们假设有一种方法可以获取该值(例如,作为函数:objectgetvalue(Control-Control))。如果要使用此函数的返回值,则必须使用case

我有多个控件,每个控件都有不同数量的控件。我没有尝试将每个控件的“值”序列化为带有控件名和控件“状态”的xml


是否有一种通用的因素或常规方法,可以在不使用case语句的情况下以通用的方式获取这些不同的“State”单词。

没有,而且有充分的理由——所有这些数据值都有不同的类型,并且由子类定义(因此它们不是由公共接口定义的)

为了便于讨论,让我们假设有一种方法可以获取该值(例如,作为函数:
objectgetvalue(Control-Control)
)。如果要使用此函数的返回值,则必须使用
case
语句来获取其类型并正确使用它


所以只要有一个
case
语句。

这些都是在每个类上创建的属性,而不是从基类或接口创建的。所以它们之间没有联系。我想你说的是WinForms。(你应该用你所问的技术来标记你的问题。)无论如何,理论上,如果你开发了自己的一套控件,这是可能的。例如,Developer Express WinForms产品的XtraEditors库是这样构建的,其中所有控件都有一个Object类型的Value属性。对,我们有一些自定义控件,im循环通过与基本控件混合的自定义控件,我只是想知道,我是否可以不使用由15部分组成的case语句,而是更简单地使用一种方法,让所有(或部分)共享同一个接口。但事实并非如此。例如,在webforms中有一个由TextBox和其他控件实现的。在那里,您可以强制转换它们并使用
Text
-property。虽然您是对的,但由于Jashaszun的这一点,所有内容都将转换为字符串以存储在xml中,因此不同的值类型不会是一个相关的问题。@CalvinSmith当然是对的。。。然而,在大多数情况下,这将是一个问题。@Jashaszun,这解释了为什么它不被支持,地球上谁会想做它..哈哈。有这么多不同/更好的解决方案,但有时你只是按照自己的想法去做
For a textbox it would be textbox.Text,
For a radiobutton it would be radiobutton.Checked,
for a DateTimePicker it would be DateTimePicker.value