private static void ReadFrom(this ICanRead self, IUnformattedReader reader) { if (reader != null) { reader.Read((version) => { self.ReadFrom(reader, version); }); } }
public void Read(IUnformattedReader inner, Action <int> content) { int version = inner.UnformattedRead <int>(); if (version == Version) { var header = inner.UnformattedRead <ObjectHeader>(); content(header.Version); inner.UnformattedRead <ObjectFooter>(); } }
public T Property <T>(IUnformattedReader reader) { var holder = reader.UnformattedRead <PropertyHolder>(); if (holder.CanRead) { var readable = Activator.CreateInstance(typeof(T)) as ICanRead; readable.ReadFrom(reader); return((T)readable); } else { return((T)holder.Value); } }
public IEnumerable <T> List <T>(IUnformattedReader reader) { var holder = reader.UnformattedRead <ListHolder>(); for (int count = 0; count < holder.Length; count++) { var itemHolder = reader.UnformattedRead <ListItemHolder>(); if (itemHolder.CanRead) { var readable = Activator.CreateInstance(typeof(T)) as ICanRead; readable.ReadFrom(reader); yield return((T)readable); } else { yield return((T)itemHolder.Value); } } }