Advertisement
Guest User

Untitled

a guest
Jul 19th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.17 KB | None | 0 0
  1.  
  2. public abstract class Datable
  3. {
  4. private readonly int _arg1;
  5. private readonly string _arg2;
  6.  
  7. public Datable(int arg1, string arg2)
  8. {
  9. _arg1 = arg1;
  10. _arg2 = arg2;
  11. }
  12. }
  13. public class StatementRow : Datable
  14. {
  15. public StatementRow(int arg1, string arg2) : base(arg1, arg2)
  16. {
  17. }
  18. }
  19. public class DatableUtils
  20. {
  21. public static List<T> AddHeaders<T>(List<T> array, Func<int,string,T> factory) where T:Datable
  22. {
  23. var res = new List<T>();
  24. if (array.Count == 0)
  25. return res;
  26. res.Add(factory(0, "Header"));//вместо вызова конструктора просим фабрику
  27. res.Add(array[0]);
  28. for(int i=1;i<array.Count;i++)
  29. {
  30. if(array[i-1] != array[i])//тут дата или что ты там сравниваешь
  31. {
  32. res.Add(factory(i, "Header"));
  33. }
  34. res.Add(array[i]);
  35. }
  36. return res;
  37. }
  38. }
  39.  
  40. static void Test()
  41. {
  42. var source = new List<StatementRow>();
  43. //заполняем
  44. var res = DatableUtils.AddHeaders(source, (a1, a2) => new StatementRow(a1, a2));//вызываем с фабрикой, правда ее руками писать, но все равно работы менее, чем через рефлексию
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement