public CachedObjectSource(T instance, IObjectCache <T> cache)
        {
            this.weakInstance = new WeakReference <T>(instance);
            this.cache        = cache;

            this.evictAction = new WeakAction <CachedObjectSource <T>, T>(this, (o, d) => o.OnEvicted(d));
            cache.AddOrAccess(instance, this.evictAction);
        }