在Winform应用程序中,我有一个包含2个属性的类,我希望用户能够选择这些属性的类型.
这是我到目前为止所做的:
具有属性的类:
static public class DataGridColumnData
{
public static object SearchColumn { get; set; }
public static object ResultColumn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并且用户可以使用具有DropDownList Style的Combobox来选择属性的类型,其具有类似的值
System.String
System.Double
System.Int32
System.Boolean
System.DateTime
Run Code Online (Sandbox Code Playgroud)
有没有办法让这些属性成为用户选择的类型?
你可以使你的类通用:
static public class DataGridColumnData<T>
{
public static T SearchColumn { get; set; }
public static T ResultColumn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的代码中,您可以创建所需类型的类:
object myDataGridColumnData;
if (userSelection == "String") {
myDataGridColumnData = new DataGridColumnData<string>();
} else if (userSelection == "Double") {
myDataGridColumnData = new DataGridColumnData<double>();
} ...
Run Code Online (Sandbox Code Playgroud)
请注意,从技术上讲,它DataGridColumnData<string>是一种完全不同的类型DataGridColumnData<int>,因此object是唯一常见的超类型.因此,为了能够访问myDataGridColumnData代码中的值,您可能需要使用dynamic变量或(首选)使用一些返回键入的值作为对象的公共接口或基类.