假设我们有一个结构,它的数据由使用Marshal.PtrToStructure的非托管字节数组提供.
C#结构布局:
[StructLayout(LayoutKind.Sequential, Size = 128, CharSet = CharSet.Ansi, Pack = 1)]
public struct MNG_Y_Params
{
public byte Number;
public byte Version;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[] OliNumber;
public byte InterfaceType;
}
Run Code Online (Sandbox Code Playgroud)
字节数组表示未托管代码中的(ascii)字符串.
此结构是另一个结构的成员(具有一些其他成员):
public struct MyData
{
public int ID;
public StructType structType;
[XmlElement(ElementName="MNG_Y_Params")]
public MNG_Y_Params y_params;
[XmlElement(ElementName = "SimpleStruct2")]
public SimpleStruct2 ss2;
};
Run Code Online (Sandbox Code Playgroud)
所以我们也有这个支持代码
public class XMLIgnore
{
static public XmlSerializer customserialiser(MyData d)
{
XmlAttributes attrs = new XmlAttributes();
attrs.XmlIgnore = true;
XmlAttributeOverrides xmlOveride = new XmlAttributeOverrides(); …Run Code Online (Sandbox Code Playgroud)