在C#项目中获取所有用户控件

时间:2015-05-06 03:24:31

标签: c#

我创建了一些UserControls。我想将项目中的所有UserControl添加到List<UserControl>

我已经阅读了一些关于这个问题的主题,但我无法让它发挥作用。 我试过在命名空间中获取所有UserControl但它仍然不起作用。

var controlType = typeof(UserControl);
var controls = controlType
            .Assembly
            .GetTypes()
            .Where(t => controlType.IsAssignableFrom(t) &&
                        t.Namespace == "AgentManagement.UserInterface.SystemUI"
            );

1 个答案:

答案 0 :(得分:0)

问题是您正在获取System中UserControl类的程序集。你想要做的是从UserControl得到你的类,这显然不会出现在系统程序集中。

您要做的是打电话,例如:

Assembly.GetExecutingAssembly()
        .GetTypes()
        .Where(t => controlType.IsAssignableFrom(t) &&
                    t.Namespace == "AgentManagement.UserInterface.SystemUI");

或者,如果它不在执行程序集中,则类似

typeof(OneOfYourUserControl).Assembly.GetTypes().Where(...);