CoreTableAdapter.cs 881 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace InABox.Core
  5. {
  6. public class CoreTableAdapter<T> : IEnumerable<T> where T : BaseObject, new()
  7. {
  8. private List<T>? _objects;
  9. private readonly CoreTable _table;
  10. public CoreTableAdapter(CoreTable table)
  11. {
  12. _table = table;
  13. }
  14. private List<T> Objects
  15. {
  16. get => _objects ??= _table.Rows.Select(row => row.ToObject<T>()).ToList();
  17. }
  18. public T this[int index] => Objects[index];
  19. public IEnumerator<T> GetEnumerator()
  20. {
  21. return GetObjects();
  22. }
  23. IEnumerator IEnumerable.GetEnumerator()
  24. {
  25. return GetObjects();
  26. }
  27. private IEnumerator<T> GetObjects()
  28. {
  29. return Objects.GetEnumerator();
  30. }
  31. }
  32. }