You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.3 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace Apewer.Source
  5. {
  6. /// <summary></summary>
  7. public abstract class Accessor<T> where T : class, IDatabase, new()
  8. {
  9. private T _source = null;
  10. private bool _disposed = false;
  11. /// <summary></summary>
  12. public Accessor() { }
  13. /// <summary></summary>
  14. protected virtual T Source
  15. {
  16. get
  17. {
  18. if (_source == null) _source = new T();
  19. return _source;
  20. }
  21. }
  22. /// <summary></summary>
  23. public virtual bool Connected
  24. {
  25. get
  26. {
  27. return (_source == null) ? false : _source.Online;
  28. }
  29. }
  30. /// <summary></summary>
  31. public virtual bool Disposed
  32. {
  33. get { return _disposed; }
  34. }
  35. /// <summary></summary>
  36. public virtual void Close()
  37. {
  38. if (_source == null) return;
  39. _source.Close();
  40. }
  41. /// <summary></summary>
  42. public virtual void Dispose()
  43. {
  44. if (_source != null)
  45. {
  46. _source.Dispose();
  47. _source = null;
  48. }
  49. _disposed = true;
  50. }
  51. }
  52. }