2011-08-25 70 views
0

我想在WPF中做一个简单的应用程序,并且我遇到了一些异常。我有2个类:一个部分类(用于WPF窗口)和另一个我自己设置的公共类。当我尝试访问从WPF窗口类创建的类时,我遇到了一个TargetInvocationException,告诉我对象引用未设置为对象的实例。但是,导致异常的对象引用被设置为对象的一个​​实例。C#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

回答

0

CurrentParent领域_Par是从来没有初始化的,因此CP.Par为空。当框架试图调用Add时抛出异常。您需要initialze _Par

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

    public List<string> Par 
    { 
     get { return _Par; } 
     set { _Par = value; } 
    } 
} 
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; 
} 
+2

自动属性不会自动实例化。 – Marc

+1

你是对的,哈哈。尽管看到最初的问题,但我仍然与OP一样进行了监督。有趣的是如何工作。 –