public List <string> TryDynamicTypeDecoding(DirectoryAttribute attrib, ref bool match) { match = false; List <string> ret = new List <string>(); DynamicAttributeAssociator assoc = ForestBase.ADHelperDynamicDLL.AssociatorList.GetValueSafe <string, DynamicAttributeAssociator>(attrib.Name); if (assoc != null) { switch (assoc.AssociateFrom) { case ASSOCIATE_FROM.ENUM: ret = DynamicEnumDecoding(attrib, ref match); break; case ASSOCIATE_FROM.BERCONVERTER: ret = DynamicBerDecoding(attrib, assoc, ref match); break; case ASSOCIATE_FROM.DICTIONARY: ret = DynamicDictDecoding(attrib, assoc, ref match); break; } } return(ret); }
private void GetAttributeAssociatorFromXML(XElement xmlAssoc) { DynamicAttributeAssociator dynassoc = new DynamicAttributeAssociator(); dynassoc.Name = xmlAssoc.Attributes(NAME_ID).FirstOrDefault().Value; if (xmlAssoc.Attributes(ENUM_ID).Count() != 0) { dynassoc.EnumName = xmlAssoc.Attributes(ENUM_ID).FirstOrDefault().Value; dynassoc.AssociateFrom = ASSOCIATE_FROM.ENUM; } else if (xmlAssoc.Attributes(DECODE_ID).Count() != 0) { dynassoc.BerConverterName = xmlAssoc.Attributes(DECODE_ID).FirstOrDefault().Value; dynassoc.AssociateFrom = ASSOCIATE_FROM.BERCONVERTER; } else if (xmlAssoc.Attributes(DICT_ID).Count() != 0) { dynassoc.DictionaryName = xmlAssoc.Attributes(DICT_ID).FirstOrDefault().Value; dynassoc.AssociateFrom = ASSOCIATE_FROM.DICTIONARY; } if (dynassoc.Name.Length != 0) { AssociatorList.Add(dynassoc.Name, dynassoc); } }
public Type GetEnumFromDynamicAssociator(string attribName) { Type ret = null; if (AssociatorList.ContainsKey(attribName)) { DynamicAttributeAssociator assoc = AssociatorList[attribName]; if (assoc.AssociateFrom == ASSOCIATE_FROM.ENUM) { ret = EnumList.GetValueSafe <string, Type>(assoc.EnumName); } } return(ret); }
private void AddAssociatorToXml(DynamicAttributeAssociator assoc, ref XElement xmlRoot) { bool goon = true; XAttribute xmltype = null; switch (assoc.AssociateFrom) { case ASSOCIATE_FROM.BERCONVERTER: xmltype = new XAttribute(DECODE_ID, assoc.BerConverterName); break; case ASSOCIATE_FROM.ENUM: xmltype = new XAttribute(ENUM_ID, assoc.EnumName); break; case ASSOCIATE_FROM.DICTIONARY: xmltype = new XAttribute(DICT_ID, assoc.DictionaryName); break; //case ASSOCIATE_FROM.TYPE: // xmltype = new XAttribute(SYSTEMTYPE_ID, assoc.TypeName); // break; default: goon = false; break; } if (goon) { XElement xmlassoc = new XElement(ASSOCIATOR_ID, new object[] { new XAttribute(NAME_ID, assoc.Name), xmltype }); xmlRoot.Add(xmlassoc); } }
public List <string> DynamicBerDecoding(DirectoryAttribute attrib, DynamicAttributeAssociator assoc, ref bool match) { List <string> ret = new List <string>(); DynamicBerConverter dynber = ForestBase.ADHelperDynamicDLL.BerConverterList.GetValueSafe <string, DynamicBerConverter>(assoc.BerConverterName); if (dynber != null) { List <string> fields = new List <string>(); try { foreach (byte[] value in attrib.GetValues(typeof(byte[]))) { fields = dynber.DecodePrintable(value); if (fields.Count != 0) { ret.AddRange(fields); } else { ret.AddFormatted("\t\t<not decoded>: {0}", ASCIIEncoding.Unicode.GetString(value)); } } match = true; } catch (Exception ex) { ex.ToDummy(); ret.AddFormatted("\t\t<not decoded>: {0}", attrib[0].GetType().ToString()); } } return(ret); }
public List <string> DynamicDictDecoding(DirectoryAttribute attrib, DynamicAttributeAssociator assoc, ref bool match) { List <string> ret = new List <string>(); Dictionary <string, string> dyndict = ForestBase.ADHelperDynamicDLL.DictionaryList.GetValueSafe <string, Dictionary <string, string> >(assoc.DictionaryName); if (dyndict != null) { try { foreach (string value in attrib.GetValues(typeof(string))) { if (dyndict.ContainsKey(value)) { ret.AddFormatted("\t\t<{0}> ({1})", dyndict[value], value); } else { ret.AddFormatted("\t\t<not decoded>: ({0})", value); } } match = true; } catch (Exception ex) { ex.ToDummy(); ret.AddFormatted("\t\t<not decoded>: {0}", attrib[0].GetType().ToString()); } } return(ret); }