初めてXMLシリアル化を試みました。次のコードは期待通りに機能しますが、私はこの "copyFrom"メソッドを使用したくありません。クラス内のXMLの逆シリアル化
クラス自体の内部に保存メソッドとロードメソッドを保持する良い方法はありますか?
namespace Test
{
[Serializable]
public class Settings
{
public struct Connection
{
[XmlAttribute ("user")]
public string sUser;
[XmlAttribute ("domain")]
public string sDomain;
}
public Connection connection;
public Settings()
{
connection.sUser = "";
connection.sDomain = "";
}
internal void loadFromFile()
{
if (File.Exists (Constants.STORAGE_SETTINGS_FILE))
{
using (FileStream filestream = new FileStream (Constants.STORAGE_SETTINGS_FILE, FileMode.Open, FileAccess.Read, FileShare.Read))
{
copyFrom ((Settings)new XmlSerializer (typeof (Settings)).Deserialize (filestream));
}
}
}
internal void saveToFile()
{
using (StreamWriter streamwriter = new StreamWriter (Constants.STORAGE_SETTINGS_FILE))
{
new XmlSerializer (typeof (Settings)).Serialize (streamwriter, this);
}
}
internal void copyFrom (Settings settings)
{
connection.sUser = settings.connection.sUser;
connection.sDomain = settings.connection.sDomain;
}
}
}
あなたは何を意味するのか分かりません。彼らはクラスに属していますか、別のクラスを意味していますか? –
私は "copyFrom"を避け、ロードされた値をメンバー変数に直接割り当てたいと思います。 –
serializeの結果はクラスを返し、プロパティをthis.sUserおよびthis.sDomainに移動するコードが必要です。またはこれらの変数を静的にする必要があります。 – jdweng