[英]Best practice for WP7 serializeable class [is that the way its done]
我試圖讓這個基本類正確,它應該做以下事情:
該類的代碼如下所示,整個項目可以在以下鏈接中找到:
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;
}
事實證明,二進制序列化比數據協定序列化器快得多,因此您可能需要考慮該選項。 凱文馬歇爾有一個很棒的帖子: http : //blogs.claritycon.com/kevinmarshall/2010/11/03/wp7-serialization-comparison/
您可能會發現我們在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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.