Пример #1
0
        /// <summary>
        ///     非泛型创建默认,并cast成T
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="type"></param>
        /// <param name="arg"></param>
        /// <param name="start"></param>
        /// <returns></returns>
        public T CreateDefault <T>(Type type, UniqueObjArg <TKey> arg, bool start) where T : class, TValue
        {
            if (Exist(arg.Key))
            {
                return(null);
            }
            if (type.IsSubclassOf(typeof(T)))
            {
                return(null);
            }

            return(CreateDefault(type, arg, start) as T);
        }
Пример #2
0
        /// <summary>
        ///     创建
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="arg"></param>
        /// <param name="start"></param>
        /// <returns></returns>
        public T Create <T>(UniqueObjArg <TKey> arg, bool start = false) where T : class, TValue, new()
        {
            if (Exist(arg.Key))
            {
                return(null);
            }

            var ret = New <T>(arg, start);

            Add(ret);
            EventObjCreated?.Invoke(ret);

            return(ret);
        }
Пример #3
0
        /// <summary>
        ///     创建默认
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="arg"></param>
        /// <param name="start"></param>
        /// <returns></returns>
        public T CreateDefault <T>(UniqueObjArg <TKey> arg, bool start) where T : class, TValue, new()
        {
            if (Exist(arg.Key))
            {
                return(null);
            }

            var ret = Create <T>(arg, start);

            ret.Born();
            Add(ret);
            EventDefaultObjCreated?.Invoke(ret);

            return(ret);
        }
Пример #4
0
        /// <summary>
        ///     非泛型创建
        /// </summary>
        /// <param name="type"></param>
        /// <param name="arg"></param>
        /// <param name="start"></param>
        /// <returns></returns>
        public IObj Create(Type type, UniqueObjArg <TKey> arg, bool start = false)
        {
            if (Exist(arg.Key))
            {
                return(null);
            }
            if (!type.IsSubclassOf(typeof(TValue)))
            {
                return(null);
            }

            var ret = New(type, arg, start);
            var obj = ret as TValue;

            Add(obj);
            EventObjCreated?.Invoke(obj);
            return(ret);
        }