Example #1
0
        public void IsSafe()
        {
            //InternalSafeClass是并发访问安全的
            Assert.IsTrue(SafeAccessAttribute.IsDefined(typeof(SafeInternalClass)));

            //InternalUnsafeClass不是并发访问安全的
            Assert.IsFalse(SafeAccessAttribute.IsDefined(typeof(UnsafeInternalClass)));
        }
Example #2
0
        public T GetInstance <T>() where T : class
        {
            var instanceType = typeof(T);
            var isSafe       = SafeAccessAttribute.IsDefined(instanceType);
            var obj          = isSafe ? GetInstanceBySingleton() : CreateInstance();
            var instance     = obj as T;

            if (instance == null)
            {
                throw new TypeMismatchException(obj.GetType(), instanceType);
            }
            return(instance);
        }