Пример #1
0
 private static void ReadFrom(this ICanRead self, IUnformattedReader reader)
 {
     if (reader != null)
     {
         reader.Read((version) =>
         {
             self.ReadFrom(reader, version);
         });
     }
 }
Пример #2
0
            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>();
                }
            }
Пример #3
0
            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);
                }
            }
Пример #4
0
            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);
                    }
                }
            }