我试图让这个基本类正确,它应该执行以下操作:
该类的代码如下所示,整个项目可以在以下链接中找到:
http://www.filesavr.com/XXRM3TJ9LSW6FEC
任何使这个更好的方法,或者它“尽可能好”。
谢谢, 克里斯
PS:我知道,这不是一个真正的问题,但如果我将基于这个设计的很多课程,所以我想确保不重复错误。我虽然创建了我自己的可观察集合,它支持“当前”和序列化,但我对泛型属性有点挣扎。你会创建一个,还是使用我在下面的例子中使用的方法?[DataContract]
public class SerializerTest : INotifyPropertyChanged
{
private DispatcherTimer _dT;
private List<string> _strings;
public static string Key { get{return typeof (SerializerTest).FullName;} }
[DataMember]
public List<string> Strings
{
get
{
return _strings;
}
set
{
_strings = value;
StringsObservable = new ObservableCollection<string>();
foreach (var s in _strings) StringsObservable.Add(s);
}
}
[DataMember]
public int CurrentStringIndex { get; set; }
public ObservableCollection<string> StringsObservable { get; set; }
public string CurrentString
{
get
{
if (Strings == null) return null;
if (Strings.Count <= CurrentStringIndex) return null;
return Strings[CurrentStringIndex];
}
}
public SerializerTest()
{
Strings = new List<string>();
StringsObservable = new ObservableCollection<string>();
InteralInit();
}
[OnDeserialized]
public void Init(StreamingContext c)
{
InteralInit();
}
private void InteralInit()
{
_dT = new DispatcherTimer();
_dT.Tick += (a, b) => AddString();
_dT.Interval = new TimeSpan(0, 0, 0, 2);
_dT.Start();
}
public void AddString()
{
Strings.Add(DateTime.Now.ToLongTimeString() + ":" + DateTime.Now.Millisecond);
StringsObservable.Add(Strings.Last());
CurrentStringIndex = Strings.Count - 1;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(""));
}
public event PropertyChangedEventHandler PropertyChanged;
}
答案 0 :(得分:1)
事实证明,二进制序列化比数据协定序列化程序快得多,因此您可能需要考虑该选项。凯文马歇尔有一个很棒的帖子:http://blogs.claritycon.com/kevinmarshall/2010/11/03/wp7-serialization-comparison/
答案 1 :(得分:1)
您可能会发现我们在Windows Phone 7上序列化为二进制文章的文章非常有用:
http://verysoftware.co.uk/blog/serializing-to-binary-on-wp7-part1/
http://verysoftware.co.uk/blog/serializing-to-binary-on-wp7-part2/