/// <summary>
        /// 将 OJSystem 枚举值转换为其对应的字符串表示。
        /// </summary>
        /// <param name="value">要转换的 OJSystem 枚举值。</param>
        /// <returns>对应的字符串表示。</returns>
        /// <exception cref="ArgumentException"/>
        public static string ConvertToString(OJSystem value)
        {
            switch (value)
            {
            case OJSystem.BIT:
                return(BitString);

            case OJSystem.BZOJ:
                return(BzojString);

            case OJSystem.CodeForces:
                return(CodeForcesString);

            case OJSystem.Gym:
                return(GymString);

            case OJSystem.HDU:
                return(HduString);

            case OJSystem.POJ:
                return(PojString);

            case OJSystem.UVa:
                return(UvaString);

            case OJSystem.UVaLiveArchieve:
                return(UvaLaString);

            case OJSystem.ZOJ:
                return(ZojString);

            default:
                throw new ArgumentException("传入的 OJSystem 枚举值非法。");
            }
        }
示例#2
0
        /// <summary>
        /// 使用给定的题目来源 OJ 系统在给定的数据集中查询题目实体对象并返回。
        /// </summary>
        /// <param name="dataset">数据集。</param>
        /// <param name="oj">题目的来源 OJ 系统。</param>
        /// <returns>一个可查询对象,该对象可查询到所有的符合要求的实体对象。</returns>
        /// <exception cref="ArgumentNullException"/>
        public static IQueryable <ProblemEntity> QueryProblemEntitiesByOrigin(IQueryable <ProblemEntity> dataset,
                                                                              OJSystem oj)
        {
            if (dataset == null)
            {
                throw new ArgumentNullException(nameof(dataset));
            }

            var entities = from item in dataset
                           where item.Origin == oj
                           select item;

            return(entities);
        }
        /// <summary>
        /// 根据给定的题目句柄返回 IProblemUrlResolver 原型对象。
        /// </summary>
        /// <param name="handle">题目句柄。</param>
        /// <returns>题目 URL 解析器原型对象。若工厂类中没有注册对应的原型对象,返回 null。</returns>
        /// <exception cref="ArgumentNullException"/>
        public static IProblemUrlResolver GetUrlResolverFor(ProblemHandle handle)
        {
            if (handle == null)
            {
                throw new ArgumentNullException(nameof(handle));
            }

            OJSystem oj = ProblemOriginResolver.Resolve(handle);

            if (ms_prototypes.ContainsKey(oj))
            {
                return(ms_prototypes[oj]);
            }
            else
            {
                return(null);
            }
        }