C# TargetInvocationException - (не должно быть там?)
Я пытаюсь сделать простое приложение в 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; }
}
}
Конечно, это в одном пространстве имен. Я не вижу никакой причины, почему я должен получать эту ошибку, так как моя ссылка на объект CP явно является экземпляром CurrentParent.
Кто-нибудь знает, как это исправить? Заранее спасибо!
-ian
2 ответа
Вы не создаете экземпляр члена _Par в классе CurrentParent. Это должно решить вашу проблему:
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
поле _Par
никогда не инициализируется и, следовательно, CP.Par
нулевой. Исключение выдается, когда фреймворки пытаются вызвать Add
, Вам нужно инициализировать _Par
:
public class CurrentParent
{
private List<string> _Par = new List<string>();
public List<string> Par
{
get { return _Par; }
set { _Par = value; }
}
}