private Manager() { AccessData = new AccessXML(); Page = LoginUC.TITLE; AccessData.Key = Properties.Settings.Default.Key; AccessData.IV = Properties.Settings.Default.IV; AccessData.Security = false; }
private CardBase() { ImageBase = new ImageFile(); Cards = new List <Card>(); if (!File.Exists(ConfigurationManager.AppSettings["XMLCardBasePath"])) { return; } XmlDocument doc = new XmlDocument(); doc.Load(ConfigurationManager.AppSettings["XMLCardBasePath"]); foreach (XmlNode XMLCardDescription in doc.GetElementsByTagName("Card")) { Card card = new Card(); card.Header = XMLCardDescription.SelectSingleNode("Header").InnerText; card.Description = XMLCardDescription.SelectSingleNode("Description").InnerText; card.uid = Guid.Parse(XMLCardDescription.SelectSingleNode("uid").InnerText); card.ImageRef = Guid.Parse(XMLCardDescription.SelectSingleNode("Image").InnerText); //Заполняем эффекты card.effects = new List <ParametredAction>(); foreach (XmlNode EffectXML in XMLCardDescription.SelectSingleNode("Effects").ChildNodes) { XmlNode EffectParamsNode = EffectXML.SelectSingleNode("Parameters"); List <object> Params = new List <object>(); for (int i = 0; i < EffectParamsNode.ChildNodes.Count; i++) { Params.Add(EffectParamsNode.ChildNodes[i].InnerText); } string EffectName = EffectXML.SelectSingleNode("Name").InnerText; string MethodName = EffectXML.SelectSingleNode("MethodName").InnerText; ParameterInfo[] info = typeof(Effect).GetMethod(MethodName).GetParameters(); ArrayList ReadyParams = new ArrayList(); for (int j = 0; j < info.Length; j++) { if (!info[j].ParameterType.IsEnum) { ReadyParams.Add(Convert.ChangeType(Params[j], info[j].ParameterType)); } else { ReadyParams.Add(Enum.Parse(info[j].ParameterType, (string)Params[j])); } } ParametredAction pa = new ParametredAction(typeof(Effect).GetMethod(MethodName), ReadyParams.ToArray(), typeof(Effect)); pa.Name = EffectName; card.effects.Add(pa); } //Заполняем доступы card.accesses = new List <ParametredAction>(); foreach (XmlNode AccessXML in XMLCardDescription.SelectSingleNode("Accesses").ChildNodes) { XmlNode AccessParamsNode = AccessXML.SelectSingleNode("Parameters"); List <object> Params = new List <object>(); for (int i = 0; i < AccessParamsNode.ChildNodes.Count; i++) { Params.Add(AccessParamsNode.ChildNodes[i].InnerText); } string AccessName = AccessXML.SelectSingleNode("Name").InnerText; string MethodName = AccessXML.SelectSingleNode("MethodName").InnerText; ParameterInfo[] info = typeof(Access).GetMethod(MethodName).GetParameters(); ArrayList ReadyParams = new ArrayList(); for (int j = 0; j < info.Length; j++) { if (!info[j].ParameterType.IsEnum) { ReadyParams.Add(Convert.ChangeType(Params[j], info[j].ParameterType)); } else { ReadyParams.Add(Enum.Parse(info[j].ParameterType, (string)Params[j])); } } ParametredAction pa = new ParametredAction(typeof(Access).GetMethod(MethodName), ReadyParams.ToArray(), typeof(Access)); pa.Name = AccessName; card.accesses.Add(pa); } Cards.Add(card); } }