我正在尝试在WPF中创建一个简单的应用程序,并且我遇到了一些异常现象。我有两个类:一个部分类(用于WPF窗口),另一个我自己设置的公共类。当我尝试访问我从WPF窗口类创建的类时,我遇到了一个TargetInvocationException,告诉我对象引用没有设置为对象的实例。但是,导致异常的对象引用被设置为对象的实例。
这是我的代码:
public partial class MainWindow : Window
{
CurrentParent CP = new CurrentParent();
public MainWindow()
{
InitializeComponent();
CP.Par.Add("MainCanvas");
}
}
public class CurrentParent
{
private List<string> _Par;
public List<string> Par
{
get { return _Par; }
set { _Par = value; }
}
}
当然,这是在一个命名空间中。我看不出为什么我应该收到此错误,因为我的对象引用CP显然是CurrentParent的一个实例。
有人知道如何解决这个问题吗?提前谢谢!
-Ian
答案 0 :(得分:0)
在CurrentParent
中,字段_Par
永远不会被初始化,因此CP.Par
为空。当框架尝试调用Add
时抛出异常。您需要初始化_Par
:
public class CurrentParent
{
private List<string> _Par = new List<string>();
public List<string> Par
{
get { return _Par; }
set { _Par = value; }
}
}
答案 1 :(得分:0)
您没有在CurrentParent类中实例化_Par成员。这应该可以解决您的问题:
public class CurrentParent
{
public CurrentParent()
{
this.Par = new List<String>();
}
public List<String> Par { get; set; }
}
请注意,该示例使用自动属性。这是一个更详细的示例,可以更好地突出您的问题:
public class CurrentParent
{
public CurrentParent()
{
this._Par = new List<String>();
}
public List<String> Par
{
get { return this._Par; }
set { this._Par = value; }
}
private List<String> _Par;
}