私は観測可能なコレクションをバイナリファイルにエクスポートする必要があります。このファイルは埋め込みソフトウェアによって解析されます。クラスをバイナリファイルにエクスポートするには
これは、LEDの構成の私のクラスである:
[XmlRoot("ConfLed")]
public class LedVals
{
#region Properties
[XmlAttribute]
public int ID { get; set; }
[XmlAttribute]
public string Type { get; set; } = "Trigger";
[XmlAttribute]
public string Binding { get; set; } = "OFF";
[XmlAttribute]
public int Trigger1 { get; set; } = 0;
[XmlAttribute]
public int Trigger2 { get; set; } = 0;
[XmlAttribute]
public string ColorT0 { get; set; } = "#000000";
[XmlAttribute]
public string ColorT1 { get; set; } = "#000000";
[XmlAttribute]
public string ColorT2 { get; set; } = "#000000";
#endregion
public LedVals()
{
}
public LedVals(int idParam, string typeParam, string bindingParam, int trig1Param, int trig2Param, string c0Param, string c1Param, string c2Param)
{
this.ID = idParam;
this.Type = typeParam;
this.Binding = bindingParam;
this.Trigger1 = trig1Param;
this.Trigger2 = trig2Param;
this.ColorT0 = c0Param;
this.ColorT1 = c1Param;
this.ColorT2 = c2Param;
}
}
そして、これは私がエクスポートする必要がLedValsクラスの監視可能なコレクション(ListeLedTable)のための私のシリアル化機能である:
public void SerializeLedTable(string filePathParam)
{
try
{
using (Stream mstream = File.Open(filePathParam + ".bin", FileMode.Create))
{
BinaryFormatter bin = new BinaryFormatter();
bin.Serialize(mstream, ListeLedTable);
}
}
}
結果は、観察可能なコレクション構造のクラスプロパティとテキスト記述のバイナリ値を持つファイルです。
このようなクラスのプロパティ値を書き出す方法はありますか?
私は、ループ内で自分のクラスの各プロパティを書き込むためにbinaryWriterを使うことができますが、もっと簡単な解決法があると思いました。
ありがとうございました!
Marshal例外が発生しました.Marshal.SizeOfは管理対象オブジェクトのサイズを取得できません。 – Alexus
クラスLedValsの定義の前に追加します。[StructLayout(LayoutKind.Sequential)]。 – jdweng
ファイルを必要としない場合は、代わりにMemoryStreamを使用できます。 – jdweng