0

私は WPF で簡単なアプリを作成しようとしていますが、少し異常に遭遇しました。2 つのクラスがあります。部分クラス (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; }
    }
}

もちろん、これは 1 つの名前空間にあります。オブジェクト参照 CP は明らかに CurrentParent のインスタンスであるため、このエラーが発生する理由がわかりません。

誰でもこれを修正する方法を知っていますか? 前もって感謝します!

-イアン

4

2 に答える 2

0

inCurrentParentフィールド_Parは初期化されないためCP.Par、nullになります。フレームワークがを呼び出そうとすると、例外がスローされますAdd。初期化する必要があります_Par

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

    public List<string> Par
    {
        get { return _Par; }
        set { _Par = value; }
    }
}
于 2011-08-25T01:05:17.923 に答える
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;
}
于 2011-08-25T01:06:42.450 に答える