大家好,
我有一个符合我通过反射(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/