c# TargetInvocationException -(不应该存在?)



我正试图在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;
}

相关内容

  • 没有找到相关文章

最新更新