2011-08-25 41 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一樣進行了監督。有趣的是如何工作。 –

相關問題