Создание WebControls из полного пути (имя сборки?)

У меня есть веб-страница в ASP.NET 3.5, которая будет динамически создавать веб-элементы управления. WebControls, которые он будет создавать, будут известны по их полному пути (то есть - System.Web.UI.WebControls.whothing). Причина этого в том, что я разрешаю пользователю решать, какие элементы управления будут отображаться на веб-странице. Конечно, тут сложнее, но это в двух словах.

Проще говоря - как мне создать WebControl на веб-странице по ее полному пути?

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

2 ответа

Решение

Попробуйте назвать так: Activator.CreateInstance(Type.GetType("TypeName"));

где TypeName - полное имя, включая сборку. в моем случае это выглядело так:

Activator.CreateInstance(Type.GetType("System.Web.UI.WebControls.Label, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"));

чтобы быть уверенным в использовании полного имени в вашем случае, попробуйте вывести typeof(System.Web.UI.WebControls.Label).FullName и использовать его в качестве шаблона

object widget = Activator.CreateInstance ( Assembly.GetType ( name ) );

где имя - строка полностью определенного типа

Другие вопросы по тегам