c# - .Net/C# 反射--填充组合框

标签 c# .net data-binding reflection system.reflection

大家好,

我有一个符合我通过反射(reflection)获得的特定标准的“类型”列表。每种类型都是用户可能在运行时选择的不同功能。如果我稍后添加更多子类,这个动态实现将让我不必记住更新用户控件就是这里的想法。

类型列表很不错,但如果能显示比用代码编写的名称更有意义的内容,那就更好了。例如,我想显示“Racing Bike Designer”而不是“RacingBikeDesigner”,甚至可能显示与该类型关联的其他属性,如“Description”,以便用户知道该特定选择的作用。

所以我想问题是,给定一个类型,我如何才能为用户提供更有意义的表示?我是否可以向每个子类添加一个静态字段并从类型中调用它,或者我是否可以以某种方式使用类型转换器?

用户控件(ListBox、ComboBox 等)绑定(bind)到下面的返回值,但它不是用户友好的:

List<string> LeftHandedUserChoices = new List<string>();
Type[] AllTypesInThisAssembly = Assembly.GetAssembly(typeof(UserChoices)).GetTypes();
foreach (Type _currentType in AllTypesInThisAssembly)
    if (_currentType.IsSubclassOf(typeof(UserChoices)))
        LeftHandedUserChoices.Add(_currentType.Name);
return LeftHandedUserChoices;

干杯, 问

最佳答案

您有几个选择可以做到这一点。您可以在您的类型上使用一个属性来进行描述,或者将它放在类型的静态字段/属性中并使用反射检索它。

如果本地化是个问题,您可能希望存储资源字符串名称,并在运行时显示资源值。

关于c# - .Net/C# 反射--填充组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5970164/

相关文章:

c# - 以抽象类的子类数组作为参数的构造函数

c# - sc.exe 将 exe 安装为服务?

asp.net - 无法在 DropDownList 中选择多个项目,但调试器可以完美地逐步执行代码

c# - db4o 如何通过配置重命名类

ruby-on-rails - 如何混淆 Rails 中记录的 ID?

c# - GridView 数据绑定(bind)

c# - 从 C# 中的 Windows 窗体应用程序访问 office 项目类

c# - Sonar-CSharp 不分析 .cs 文件

javascript - 从客户端填充时,不会触发 Dropdown 的 SelectedIndexChanged 事件

c# - .Net 支票打印的 POS