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); }
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); }
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); }