Activator.CreateInstance需要另一个对象进行实例化

时间:2012-01-20 10:24:19

标签: c#

我用经典

实例化我的对象
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其他错误行,但我不认为它有用......

1 个答案:

答案 0 :(得分:2)

当你说你的构造函数引用另一个对象时,你的意思是你应该将它作为参数传递给构造函数吗?如果是这样,那么Activator.CreateInstance会出现重载,允许您指定参数值。有关详细信息,请参阅MSDN,但基本上,您可以在类型后添加它们。