2015-05-06 6 views
-1

Я создал несколько UserControls. Я хочу добавить все UserControls в свой проект в List<UserControl>.Получить весь пользовательский контроль в проекте C#

Я прочитал несколько тем по этому вопросу, но я не могу заставить его работать. Я попытался получить все UserControls в пространстве имен, но он все еще не работает.

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

UserControl является класс System? если вы хотите получить свой созданный пользовательский контроль, должна получить локальную сборку – Peyman

+2

«она все еще не работает» не ясна. – Blorgbeard

+0

Попробуйте добавить дополнительную информацию к своему сообщению о том, что вы пробовали, какие ошибки вы получите, когда он «не работает» и что вы ожидаете. Чем больше информации, тем лучше! – Will

ответ

0

Вопрос заключается в том, что вы получаете сборку UserControl класса, который находится в системе. То, что вы хотите сделать, это получить ваши классы, полученные от UserControl, которые, очевидно, не будут в сборке системы.

То, что вы хотите сделать, это звонит, например:

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

Или, если это не в исполняющем сборки, что-то вроде

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

Я хочу, чтобы все пользовательские элементы управления были созданы. –

+0

Я хочу, чтобы все пользовательские элементы управления были созданы. Пример: У меня есть контекст динамического меню. Я хочу, чтобы при вызове события «Click», пользовательский элемент управления будет открыт (имя управляющего элемента и элемент в меню будет сравниваться по базе данных). если у меня есть пользовательский контроль «ucAccount» Мне нужно сделать ucAccount _ucEx = new ucAccount(); , но у меня есть много пользовательского контроля, и я хочу сделать это автоматически. –

+0

Да, это то, что вы должны получить с кодом, который я написал в своем ответе. Разве это не работает? – Gimly

Смежные вопросы