C# 忽略具有封送处理的类属性

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

我需要将此类的ObservableCollection导出到二进制文件:

[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
属性导出为二进制。如何执行此操作?

在封送对象时,无法忽略字段。可能需要为要封送的数据创建一个单独的类。

好的,谢谢,我将使用一个中间类进行封送。