/// <summary> /// Конструктор копирования /// </summary> /// <param name="rhs"></param> public CXMLSerializerBase(CXMLSerializerBase rhs) { Type[] types = new Type[1]; object[] ctorParams = new object[1]; foreach (PropertyInfo pi in GetType().GetProperties()) { if (!Attribute.IsDefined(pi, typeof(XmlIgnoreAttribute))) { // Свойство сериализуется => копируем его if (pi.PropertyType.BaseType == GetType().BaseType) { // Нужно вызвать конструктор копирования => деллаем это через reflection types[0] = pi.PropertyType; ctorParams[0] = pi.GetValue(rhs, null); ConstructorInfo ctori = pi.PropertyType.GetConstructor(types); if (ctorParams[0] == null) { pi.SetValue(this, null, null); } else { pi.SetValue(this, ctori.Invoke(ctorParams), null); } } else { pi.SetValue(this, pi.GetValue(rhs, null), null); } } } }
/// <summary> /// /// </summary> /// <param name="FilePath"> /// Если GlobalDefines.DEFAULT_XML_STRING_VAL, то используется значение из свойства FullFilePath /// </param> /// <returns></returns> public bool Write(string FilePath = GlobalDefines.DEFAULT_XML_STRING_VAL) { lock (DataSyncObj) { if (FilePath != GlobalDefines.DEFAULT_XML_STRING_VAL) { m_FullFilePath = FilePath; /* Здесь обязательно нужно использовать поле, * т.к. при записи значения в свойство будет вызвана ClearData */ } if (FullFilePath == GlobalDefines.DEFAULT_XML_STRING_VAL || Data == null) { return(false); } TextWriter writer = null; try { writer = new StreamWriter(FullFilePath); XmlSerializer ser = new XmlSerializer(typeof(CAllExcelData)); ser.Serialize(writer, Data, CXMLSerializerBase.StdSerializerNamespaces()); writer.Close(); writer = null; } catch (Exception ex) { /* Произошла какая-то ошибка при записи данных в файл или файл недоступен для записи */ if (writer != null) { writer.Close(); } ex.ToString(); // make compiler happy return(false); } } return(true); }
public CAllExcelData() { CXMLSerializerBase.SetDefaultValsForAllProps(this); }
public CCompSettings() { CXMLSerializerBase.SetDefaultValsForAllProps(this); }
public CAgeGroup() { CXMLSerializerBase.SetDefaultValsForAllProps(this); }