Esempio n. 1
0
        public static Expression <Action <IEnumerable, TextWriter> > CreateExpression(Type type, string separator = ",")
        {
            var members    = LocalMemberInfo.FindAll(type).ToList();
            var expression = BuildFlattener.CreateWriterExpression(type, members, ',');

            return(expression);
        }
Esempio n. 2
0
        public static void Serialize(Type type, TextWriter destination, IEnumerable items)
        {
            Action <IEnumerable, TextWriter> writer;

            lock (_Delegates)
            {
                if (!_Delegates.TryGetValue(type, out writer))
                {
                    var members    = LocalMemberInfo.FindAll(type).ToList();
                    var expression = BuildFlattener.CreateWriterExpression(type, members, ',');
                    writer = expression.Compile();
                    _Delegates.Add(type, writer);
                }
            }

            writer.Invoke(items, destination);
        }
Esempio n. 3
0
        public static void Serialize <TItem, TColumn>(TextWriter destination, IEnumerable <TItem> items, KeyValuePair <string, TColumn>[] columns)
        {
            Action <IEnumerable, Array, TextWriter> writer;
            var pair = new TypePair(typeof(TItem), typeof(TColumn));

            lock (_Delegates)
            {
                if (!_DelegatesDynamic.TryGetValue(pair, out writer))
                {
                    var members    = LocalMemberInfo.FindAll(typeof(TItem)).ToList();
                    var expression = BuildFlattener.CreateWriterExpression(typeof(TItem), typeof(TColumn), members, ',');
                    writer = expression.Compile();
                    _DelegatesDynamic.Add(pair, writer);
                }
            }

            writer.Invoke(items, columns, destination);
        }