ほのぼの C#開発

開発の基礎から、現場で使用できるC#を掲載していきます。

C# シリアライズとでシリアライズ

シリアライズ デシリアライズについて

 

オブジェクトのディープコピーに用いたりする。

 

シリアライズ

/// <summary>
/// シリアライズを行います。
/// <typeparam name="T">オブジェクトのタイプ </typeparam>
/// <param name="filePath">ファイルパス</param>
/// <returns>
/// 対象ファイルから復元したデータ
/// </returns>
public static void Serializea<T>(string filePath, T source)
{
      bool isSuccess = false;

    try
    {
       XmlSerializer serializer = new XmlSerializer(source.GetTpype());

        using (StreamWriter sw = new StreamWriter(filePath))
        {
            Serializer.Serialize(sw, source);
        }

       isSuccess = true;


    }
    catch (Exception ex)
    {
        // エラー処理
    }

    return isSuccess ;
}
‌ 
‌ 

シリアライズ

 /// <summary>
/// デシリアライズを行います。
/// </summary>
/// <typeparam name="T">オブジェクトのタイプ </typeparam>
/// <param name="filePath">ファイルパス</param>
/// <returns>
/// 対象ファイルから復元したデータ
/// </returns>
public static bool  T Deserialize<T>(string filePath,ref T source)
{
    bool isSuccess = false;

    try
    {
       XmlSerializer serializer = new XmlSerializer(source.GetTpype());

        using (StreamReader sr = new StreamReader(filePath))
        {
            source = (T)Serializer.Deserialize(sr);
        }

       isSuccess = true;


    }
    catch (Exception ex)
    {
        // エラー処理
    }

    return isSuccess ;
}

 

シリアライズ対象のオブジェクト

属性を付与してシリアライズできるようにする。

 [System.Xml.Serialization.XmlRootAttribute("Company")]
    public class Company
    {
‌ 
        [System.Xml.Serialization.XmlAttributeAttribute("CompanyName")]
        public String CompanyName = String.Empty;
‌ 
        [System.Xml.Serialization.XmlElementAttribute("Customer")]
        public List<Customer> Customers = null;
‌ 
        public class Customer
        {
‌ 
            [System.Xml.Serialization.XmlElementAttribute("Name")]
            public String Name = String.Empty;
‌ 
            [System.Xml.Serialization.XmlElementAttribute("Job")]
            public String Job = String.Empty;
        }
‌ 
    }
‌ 
[XmlRootAttribute("ActionUISetup")]
public class ActionUISetup {
‌ 
    [XmlArrayAttribute("menulists")]
    [XmlArrayItemAttribute("menulist")]
    public MenuListSetup[] MenuLists;
}
‌ 
public class MenuListSetup {
‌ 
    [XmlAttribute("name")]
    public string Name;
‌ 
    [XmlArrayAttribute("items")]
    [XmlArrayItemAttribute("item")]
    public MenuItemSetup[] Items;
}
‌ 
public class MenuItemSetup {
‌ 
    [XmlElementAttribute("text")]
    public string Text;
‌ 
    [XmlElementAttribute("action")]
    public string Action;
‌ 
}