/// <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 枚举值非法。"); } }
/// <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); } }