예제 #1
0
        public void Apply(Solution solution)
        {
            RippleLog.Verbose(VerboseFlag);

            if (CacheFlag.IsNotEmpty())
            {
                solution.UseCache(new NugetFolderCache(solution, CacheFlag.ToFullPath()));
            }

            ApplyTo(solution);
        }
예제 #2
0
        /// <summary>
        /// 取得指定XML路径下的数据项
        /// </summary>
        /// <param name="xpath">分级对象的路径</param>
        /// <returns></returns>
        public virtual object RetrieveObject(string xpath)
        {
            try
            {
                object cacheObject = RetrieveOriginObject(xpath);

                CacheFlag cf = (CacheFlag)RetrieveOriginObject(xpath + "flag");


                //当标志位中有数据时
                if (cf == CacheFlag.CacheHaveData)
                {
                    string otype = cacheObject.GetType().Name.ToString();

                    //当缓存类型是数据表类型时
                    if (otype.IndexOf("Table") > 0)
                    {
                        System.Data.DataTable dt = cacheObject as DataTable;
                        if ((dt == null) || (dt.Rows.Count == 0))
                        {
                            return(null);
                        }
                        else
                        {
                            return(cacheObject);
                        }
                    }

                    //当缓存类型是CustomEditorButtonInfo[],string[],UserGroupInfo[],ModeratorInfo[],SmiliesInfo[],ForumInfo[]
                    if (otype.IndexOf("[]") > 0)
                    {
                        if (((Array)cacheObject).Length == 0)
                        {
                            return(null);
                        }
                        else
                        {
                            return(cacheObject);
                        }
                    }

                    //当缓存类型是CustomEditorButtonInfo[],string[],UserGroupInfo[],ModeratorInfo[],SmiliesInfo[],ForumInfo[]
                    if (otype.IndexOf("Collection") > 0)
                    {
                        if (((CollectionBase)cacheObject).Count == 0)
                        {
                            return(null);
                        }
                        else
                        {
                            return(cacheObject);
                        }
                    }

                    //当缓存类型是字符串类型时
                    if (otype == "String")
                    {
                        if (cacheObject.ToString() == "")
                        {
                            return(null);
                        }
                        else
                        {
                            return(cacheObject);
                        }
                    }

                    //当缓存类型是数据行
                    if (otype.IndexOf("Row") >= 0)
                    {
                        if (cacheObject == null)
                        {
                            return(null);
                        }
                        else
                        {
                            return(cacheObject);
                        }
                    }

                    //当缓存类型是int
                    if (otype.IndexOf("Int") >= 0)
                    {
                        if (((int)cacheObject).Equals(null))
                        {
                            return(null);
                        }
                        else
                        {
                            return(cacheObject);
                        }
                    }

                    //当缓存类型是SortedList
                    if (otype.IndexOf("SortedList") >= 0)
                    {
#if NET1
                        if (((SortedList)cacheObject).Count == 0)
#else
                        if (((Discuz.Common.Generic.SortedList <int, object>)cacheObject).Count == 0)
#endif
                        {
                            return(null);
                        }
                        else
                        {
                            return(cacheObject);
                        }
                    }

                    //当缓存类型是CollectionBase
                    if (otype.IndexOf("CollectionBase") >= 0)
                    {
                        if (((CollectionBase)cacheObject).Count == 0)
                        {
                            return(null);
                        }
                        else
                        {
                            return(cacheObject);
                        }
                    }
                }

                return(cacheObject);
            }
            catch
            {
                return(null);
            }
        }