2012-01-20 50 views
0

我實例化我的對象與經典Activator.CreateInstance需要另一個對象中被實例

object myObject = Activator.CreateInstance(myType); 

代碼,如果工作正常。 事情是,現在,Id想要實例化一個對象,並在其構造函數中,有一個對另一個對象的引用。 所以,如果我只是做上面的代碼中,我得到了NullReferenceException例外:

Object reference not set to an instance of an object. 

我試圖實例有關對象(Activator.CreateInstance),但我得到了同樣的異常...... 我覺得實例我的第二次CreateInstance調用之前有問題的對象是不夠的。我該怎麼辦 ?

編輯:這裏的問題

//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

確定,即將編輯 –

+0

svType可能爲空...? (堆棧似乎表明這不是你的問題,但從來不知道^^) –

回答

2

當你說你的構造函數引用另一個對象,你的意思是你應該將它作爲參數傳遞給構造函數R'如果是這樣,那麼Activator.CreateInstance有一個過載,允許您指定參數值。有關詳細信息,請參閱MSDN,但基本上,請在類型後添加它們。

+0

有一個沒有參數的構造函數,這就是我想要調用的那個!所以我認爲在構造函數代碼中使用「另一個對象」 –

相關問題