C#targetingException-(不应该存在?)

C#targetingException-(不应该存在?),c#,instance,targetinvocationexception,C#,Instance,Targetinvocationexception,我试图在WPF中制作一个简单的应用程序,但我遇到了一些异常情况。我有两个类:一个是分部类(用于WPF窗口),另一个是我自己设置的公共类。当我试图访问我从WPF窗口类创建的类时,我遇到了一个TargetInvocationException,告诉我对象引用没有设置为对象的实例。但是,导致异常的对象引用被设置为对象的实例 这是我的密码: public partial class MainWindow : Window { CurrentParent CP = new CurrentParen

我试图在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; }
    }
}
公共部分类主窗口:窗口
{
CurrentParent CP=新的CurrentParent();
公共主窗口()
{
初始化组件();
CP.Par。添加(“主画布”);
}
}
公共类CurrentParent
{
私人名单;
公众名单
{
获取{return\u Par;}
设置{u Par=value;}
}
}
当然,这在一个名称空间中。我看不出为什么会出现这个错误,因为我的对象引用CP显然是CurrentParent的一个实例

有人知道怎么解决这个问题吗?提前谢谢


-Ian

CurrentParent
中,字段
\u Par
从未初始化,因此
CP.Par
为空。框架尝试调用
Add
时引发异常。您需要初始化
\u Par

public class CurrentParent
{
    private List<string> _Par = new List<string>();

    public List<string> Par
    {
        get { return _Par; }
        set { _Par = value; }
    }
}
公共类CurrentParent
{
私有列表_Par=新列表();
公众名单
{
获取{return\u Par;}
设置{u 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;
}
公共类CurrentParent
{
public CurrentParent()
{
这是PAR=新建列表();
}
公共列表PAR{GET;SET;}
}
请注意,示例使用了自动属性。下面是一个更详细的示例,可以更好地突出您的问题:

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;
}
公共类CurrentParent
{
public CurrentParent()
{
这个。_Par=新列表();
}
公众名单
{
获取{返回此。_Par;}
设置{this.\u Par=value;}
}
私人名单;
}

自动属性不会自动实例化。没错,哈哈。尽管看到了最初的问题,但我还是做了与OP相同的疏忽。这真有趣。