fork download
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. public abstract class BaseDBObject
  5. {
  6. public BaseObjectsList<BaseDBObject> ParentList { get; set; }
  7. }
  8.  
  9. public class BaseObjectsList<T> /* : IEnumerable<T> */ where T : BaseDBObject
  10. {
  11. public List<T> ObjectsList { get; set; } = new List<T>();
  12.  
  13. internal void Fill<U>() where U : T, new()
  14. {
  15. ObjectsList.Clear();
  16. ObjectsList.Add(new U());
  17. }
  18. }
  19.  
  20. public static class BaseObjectsListExt
  21. {
  22. public static void Fill<T>(this BaseObjectsList<T> list) where T : BaseDBObject, new()
  23. {
  24. list.Fill<T>();
  25. }
  26. }
  27.  
  28. public class Smth : BaseDBObject
  29. {
  30. }
  31.  
  32. public class Test
  33. {
  34. public static void Main()
  35. {
  36. var list = new BaseObjectsList<Smth>();
  37. list.Fill();
  38. Console.WriteLine(list.ObjectsList.Count);
  39. }
  40. }
Success #stdin #stdout 0.01s 131648KB
stdin
Standard input is empty
stdout
1