2012-01-20 2 views
0

Я инстанцированием своих объектов с классическойActivator.CreateInstance нужен еще один объект для экземпляра

object myObject = Activator.CreateInstance(myType); 

кодом и, если работает нормально. Дело в том, что теперь Id хотел бы создать экземпляр объекта, а в его конструкторе есть ссылка на другой объект. Так что, если я просто сделать код выше, я получил NullReferenceException исключение:

Object reference not set to an instance of an object. 

Я пытался создать экземпляр изучаемого объекта (с Activator.CreateInstance), но я получил такое же исключение ... Я чувствую, как инстанцировании Проблематичный объект до моего второго вызова CreateInstance недостаточно. Что мне делать ?

EDIT: вот код проблемы

//A regionManager in needed by MainView as far as I understand the Exception's details 
var regionManager = Assembly.LoadFrom("RegionView.dll"); 
Type rmType = regionManager.GetType("Framework.Hmi.RegionManager"); 
object obj = Activator.CreateInstance(rmType); 
//This works ! 

var shellViewLibrary = Assembly.LoadFrom("ShellView.dll"); 
Type svType = shellViewLibrary.GetType("Framework.ShellView.MainView"); 
object objjj = Activator.CreateInstance(svType); 

Последняя строка терпит неудачу и ошибка является NullReferenceException с деталями:

at Hmi.RegionManager.get_RegionFactory() 
at Hmi.RegionManager.CreateRegion(DependencyObject element) 
at Hmi.RegionManager.OnSetRegionNameCallback(DependencyObject element, DependencyPropertyChangedEventArgs args) 
at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e) 
at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e) 
at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args) 
at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType) 
[...] 

я называю C/C 30/40 другие ошибки, но я не думаю, что это полезно ...

+1

Трудно сказать, что именно происходит - мы понятия не имеем, где выбрасывается исключение, и т. Д. Пожалуйста, предоставьте краткую, но полную программу, которая демонстрирует проблему. –

+0

ok, редактирование скоро –

+0

svType может быть пустым ...? (стек кажется, что это не ваша проблема, но никогда не знаю ^^) –

ответ

2

Когда вы говорите, что ваш конструктор ссылается на другой объект, вы имеете в виду, что вы должны передать его конструктору в качестве параметра р? Если это так, то есть перегрузка для Activator.CreateInstance, которая позволяет вам указывать значения параметров. Подробнее см. В разделе MSDN, но в основном вы добавляете их после типа.

+0

Существует конструктор без параметров, и это тот, который я пытаюсь вызвать! Поэтому я думаю, что «другой объект» используется в коде конструктора –

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