C#TargetInvocationException - (不应该在那里吗?)

时间:2011-08-25 00:59:36

标签: c# instance 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的一个实例。

有人知道如何解决这个问题吗?提前谢谢!

-Ian

2 个答案:

答案 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;
}