C# 忽略具有封送处理的类属性
我需要将此类的ObservableCollection导出到二进制文件:C# 忽略具有封送处理的类属性,c#,marshalling,C#,Marshalling,我需要将此类的ObservableCollection导出到二进制文件: [StructLayout(LayoutKind.Sequential)] [XmlRoot("RxFrame")] public class RxFrame : BaseClass { [XmlAttribute] public string ID { get; set; } = "00000000"; [XmlAttribute] public int IntVal{ get; set
[StructLayout(LayoutKind.Sequential)]
[XmlRoot("RxFrame")]
public class RxFrame : BaseClass
{
[XmlAttribute]
public string ID { get; set; } = "00000000";
[XmlAttribute]
public int IntVal{ get; set; } = 0;
[XmlAttribute]
public bool IsExtended { get; set; } = false;
public RxFrame()
{
}
}
这是将数据导出为二进制的函数:
[StructLayout(LayoutKind.Sequential)]
public class BaseClass
{
public BaseClass()
{ }
public virtual byte[] getBinaryData()
{
int size = Marshal.SizeOf(this);
IntPtr ptr = Marshal.AllocHGlobal(size);
byte[] buffer = new byte[Marshal.SizeOf(this)];
Marshal.StructureToPtr(this, ptr, false);
Marshal.Copy(ptr, buffer, 0, Marshal.SizeOf(this));
Marshal.FreeHGlobal(ptr);
return buffer;
}
}
这是每个元素上的循环:
using (FileStream mstream = File.Open(filePathParam + "RX.bin", FileMode.Create))
{
BinaryWriter bWriter = new BinaryWriter(mstream, Encoding.UTF8);
bWriter.Write(ListeRxFrames.Count);
foreach (RxFrame rx in ListeRxFrames)
{
bWriter.Write(rx.getBinaryData());
}
bWriter.Close();
}
这很好,但我只需要将RxFrame类的
IntVal
和IsExtended
属性导出为二进制。如何执行此操作?在封送对象时,无法忽略字段。可能需要为要封送的数据创建一个单独的类。好的,谢谢,我将使用一个中间类进行封送。