Assembly.CreateInstance
ожидает имя типа, и вы, кажется, передаете ему имя экземпляра типа (а именно, PictureBox
с именем PictureBox1
.). Поэтому ControlObject
- null
, и таким образом ControlObject.Name
будет кидать NullReferenceException
.
Непонятно, что вы пытаетесь сделать, но именно поэтому вы столкнулись с проблемой, которую вы испытываете. Если вы пытаетесь создать новый экземпляр PictureBox
, я не понимаю, почему вы не просто говорите new PictureBox()
; этот класс имеет открытый конструктор без параметров. С другой стороны, если вы настаиваете на отражение, можно сказать, что
controlType = PictureBox1.GetType();
controlObject = Activator.CreateInstance<Control>(controlType);
Мы могли бы помочь больше, если бы мы знали, что вы пытаетесь сделать, вместо того, чтобы просто бросать код, который не работает на нас и ждет нас, чтобы решить мировой голод ,
Кроме того,
ControlType = "System.Windows.Forms.WindowsFormsApplication1." + "PictureBox1";
Пожалуйста, переименуйте эту переменную controlType
. Вы должны использовать camel case для имен переменных.
Почему у вас есть ваш класс приложений WindowsFormsApplication1
, проживающий в системном пространстве имен System.Windows.Forms
? Не делай этого.
Можете ли вы отформатировать свой код? – rkg
Вы понимаете, что вы пытаетесь сделать? – SLaks
Неправильная сборка. Ваш пользовательский класс PictureBox1 * не * находится в сборке system.Windows.Forms.dll. –