基于MSDN示例的问题。
假设我们在独立的桌面应用程序中有一些带有HelpAttribute的C#类。是否可以枚举具有此类属性的所有类?这样识别班级有意义吗?自定义属性将用于列出可能的菜单选项,选择项将带到此类的屏幕实例。类/项目的数量将缓慢增长,但是我认为这样可以避免在其他地方枚举它们。
是的,一点没错。使用反射:
static IEnumerable<Type> GetTypesWithHelpAttribute(Assembly assembly) { foreach(Type type in assembly.GetTypes()) { if (type.GetCustomAttributes(typeof(HelpAttribute), true).Length > 0) { yield return type; } } }