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