コード例 #1
0
        /// <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);
                    }
                }
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
ファイル: CAllExcelData.cs プロジェクト: KAS1990/DBManager
 public CAllExcelData()
 {
     CXMLSerializerBase.SetDefaultValsForAllProps(this);
 }
コード例 #4
0
ファイル: CCompSettings.cs プロジェクト: KAS1990/DBManager
 public CCompSettings()
 {
     CXMLSerializerBase.SetDefaultValsForAllProps(this);
 }
コード例 #5
0
ファイル: CAgeGroup.cs プロジェクト: KAS1990/DBManager
 public CAgeGroup()
 {
     CXMLSerializerBase.SetDefaultValsForAllProps(this);
 }