我用经典
实例化我的对象object myObject = Activator.CreateInstance(myType);
代码,如果工作正常。
问题是,现在,我喜欢实例化一个对象,并且在它的构造函数中,有一个对另一个对象的引用。
因此,如果我只是执行上面的代码,我会得到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其他错误行,但我不认为它有用......
答案 0 :(得分:2)
当你说你的构造函数引用另一个对象时,你的意思是你应该将它作为参数传递给构造函数吗?如果是这样,那么Activator.CreateInstance
会出现重载,允许您指定参数值。有关详细信息,请参阅MSDN,但基本上,您可以在类型后添加它们。