public OdiViewModelFactory(IRuleHandler handler, IRuleSerializerRoot serializer, Action <OutputSectionModelCollection> appendModelAction) { this.handler = handler ?? throw new ArgumentNullException("IRuleHandler in OdiViewModelHandler"); this.appendModelAction = appendModelAction ?? throw new ArgumentNullException("Action<ElementViewModel> in OdiViewModelHandler"); this.serializer = serializer ?? throw new ArgumentNullException("IRuleSerializerRoot in OdiViewModelHandler"); choruses = serializer.GetCommonRuleChildren <TextHolder>(handler.Settings.TypiconVersionId, CommonRuleConstants.KanonasChorusRule); }
/// <summary> /// Возвращает ItemText из Правила, представляющего из себя коллекцию TextHolder, согласно индекса /// </summary> /// <param name="serializer"></param> /// <param name="typiconId"></param> /// <param name="name"></param> /// <param name="language"></param> /// <param name="index">Номер TextHolder-ы в коллекции Правил</param> /// <returns></returns> public static ItemText GetCommonRuleIndexedItemText(this IRuleSerializerRoot serializer, int typiconId, string name, int index) { ItemText result = null; if (serializer.GetCommonRuleChildren(typiconId, name).ElementAtOrDefault(index) is TextHolder t && t.Paragraphs?.Count > 0) { result = new ItemText(t.Paragraphs[0]); } return(result); }
/// <summary> /// Возвращает строку из Правила, представляющего из себя коллекцию TextHolder, согласно индекса /// </summary> /// <param name="serializer"></param> /// <param name="typiconId"></param> /// <param name="name"></param> /// <param name="language"></param> /// <param name="index">Номер TextHolder-ы в коллекции Правила</param> /// <returns></returns> public static string GetCommonRuleIndexedString(this IRuleSerializerRoot serializer, int typiconId, string name, string language, int index) { var result = ""; if (serializer.GetCommonRuleChildren(typiconId, name).ElementAtOrDefault(index) is TextHolder t && t.Paragraphs?.Count > 0) { result = t.Paragraphs[0]?.FirstOrDefault(language).Text; } return(result); }
public static T GetCommonRuleFirstChild <T>(this IRuleSerializerRoot serializer, int typiconId, string key) where T : class, IRuleElement { var collection = serializer.GetCommonRuleChildren(typiconId, key); return((collection?.Count() > 0) ? collection.FirstOrDefault() as T : default(T)); }
public static IReadOnlyList <T> GetCommonRuleChildren <T>(this IRuleSerializerRoot serializer, int typiconId, string key) where T : class, IRuleElement { return(serializer.GetCommonRuleChildren(typiconId, key).Cast <T>().ToList()); }