我正试图在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的一个实例。
有谁知道怎么解决这个问题吗?提前感谢!
伊恩
在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; }
}
}
您没有在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;
}