using System; using System.Collections.Generic; using System.Text; namespace Apewer.Source { /// <summary></summary> public abstract class Accessor<T> where T : class, IDatabase, new() { private T _source = null; private bool _disposed = false; /// <summary></summary> public Accessor() { } /// <summary></summary> protected virtual T Source { get { if (_source == null) _source = new T(); return _source; } } /// <summary></summary> public virtual bool Connected { get { return (_source == null) ? false : _source.Online; } } /// <summary></summary> public virtual bool Disposed { get { return _disposed; } } /// <summary></summary> public virtual void Close() { if (_source == null) return; _source.Close(); } /// <summary></summary> public virtual void Dispose() { if (_source != null) { _source.Dispose(); _source = null; } _disposed = true; } } }