Пример #1
0
            public ISerializer Get(TypeInfo parameter)
            {
                var contents = _contents.Get(parameter);

                if (contents is RuntimeSerializer && _specification.IsSatisfiedBy(parameter))
                {
                    var element = _element.Get(parameter);

                    var actual   = typeof(List <>).MakeGenericType(element);
                    var previous = _previous.Get(actual);
                    var result   = new Serializer(previous, Writers.Instance.Get(element)(previous));
                    return(result);
                }

                {
                    var result = _previous.Get(parameter);
                    return(result);
                }
            }
            public void Write(IFormatWriter writer, object instance)
            {
                var list = _default.Access.Get(instance)
                           .To <IList>();

                for (var i = 0; i < list.Count; i++)
                {
                    var item = list[i];
                    if (item != null)
                    {
                        var info = item.GetType()
                                   .GetTypeInfo();
                        var serializer = info == _type ? _item : _serializers.Get(info);
                        serializer.Write(writer, item);
                    }
                }
            }