【发布时间】:2014-04-26 21:14:31
【问题描述】:
我有一个带有字符串的类和一个由我的字符串中的单词填充的列表。保存后一切看起来都很好,并且程序运行正常。 XML 文件看起来也不错。
但是,一旦我重新加载我的程序并因此从 XML 文件加载,我得到一个“string = null”错误。这是我的课:
public class Wortarten : INotifyPropertyChanged
{
public Wortarten(string quest)
{
strLatein = quest;
}
public Wortarten()
{ }
private string _strLatein;
public string strLatein { set { this._strLatein = value; NotifyPropertyChanged("listLatein"); } get { return this._strLatein; } }
private List<string> _listLatein = new List<string>();
public List<string> listLatein
{
set
{
this._listLatein = value;
}
get
{
_listLatein.Clear();
string[] sep = new string[] { " ", ", " };
string[] lWorte = strLatein.Split(sep, StringSplitOptions.None);
foreach (string wort in lWorte)
{
_listLatein.Add(wort);
}
return _listLatein;
}
}
protected void NotifyPropertyChanged(String propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
这里是 XML 文件中的原始数据。
<Wortarten>
<strLatein>Wort1, Wort2, Wort3, Wort4, Wort5.</strLatein>
<listLatein>
<string>Wort1</string>
<string>Wort2</string>
<string>Wort3</string>
<string>Wort4</string>
<string>Wort5.</string>
</listLatein>
</Wortarten>
确切的错误很简单:“strLatein null”。
那么,为什么 strLatein 在这里为空?知道我在哪里搞砸了吗? 编辑:错误显示在这一行中,但仅在 XMLLoad 上,在我正在运行的程序中添加值时,它可以正常工作而没有错误。因此 XMLSave 保存了正确的值,...:
string[] lWorte = strLatein.Split(sep, StringSplitOptions.None);
请注意,我的程序还有 3 个类,并且一切正常。加载和保存已经工作了几个星期。只有这个新类似乎有这个问题,但是我没有任何其他实现 iNotifyPropertyChanged 的类。所以很有可能和那个有关。
【问题讨论】:
标签: c# xml xml-serialization inotifypropertychanged