Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public abstract class Datable
- {
- private readonly int _arg1;
- private readonly string _arg2;
- public Datable(int arg1, string arg2)
- {
- _arg1 = arg1;
- _arg2 = arg2;
- }
- }
- public class StatementRow : Datable
- {
- public StatementRow(int arg1, string arg2) : base(arg1, arg2)
- {
- }
- }
- public class DatableUtils
- {
- public static List<T> AddHeaders<T>(List<T> array, Func<int,string,T> factory) where T:Datable
- {
- var res = new List<T>();
- if (array.Count == 0)
- return res;
- res.Add(factory(0, "Header"));//вместо вызова конструктора просим фабрику
- res.Add(array[0]);
- for(int i=1;i<array.Count;i++)
- {
- if(array[i-1] != array[i])//тут дата или что ты там сравниваешь
- {
- res.Add(factory(i, "Header"));
- }
- res.Add(array[i]);
- }
- return res;
- }
- }
- static void Test()
- {
- var source = new List<StatementRow>();
- //заполняем
- var res = DatableUtils.AddHeaders(source, (a1, a2) => new StatementRow(a1, a2));//вызываем с фабрикой, правда ее руками писать, но все равно работы менее, чем через рефлексию
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement