Пример #1
0
        /// <summary>Returns a ReflectClass instance for the specified class</summary>
        /// <param name="clazz">class</param>
        /// <returns>a ReflectClass instance for the specified class</returns>
        /// <seealso cref="Db4objects.Db4o.Reflect.IReflectClass">Db4objects.Db4o.Reflect.IReflectClass
        ///     </seealso>
        public virtual IReflectClass ForClass(Type clazz)
        {
            if (clazz == null)
            {
                return(null);
            }
            IReflectClass claxx = (IReflectClass)_classByClass.Get(clazz);

            if (claxx != null)
            {
                return(claxx);
            }
            if (!clazz.IsArray && ReflectPlatform.IsNamedClass(clazz))
            {
                claxx = ForName(ReflectPlatform.FullyQualifiedName(clazz));
                if (claxx != null)
                {
                    _classByClass.Put(clazz, claxx);
                    return(claxx);
                }
            }
            claxx = _delegate.ForClass(clazz);
            if (claxx == null)
            {
                return(null);
            }
            claxx = EnsureDelegate(claxx);
            _classByClass.Put(clazz, claxx);
            return(claxx);
        }