C# 将结构封送到字符串

C# 将结构封送到字符串,c#,C#,我有一个concat字符串数据的结构 public struct MyClass1 { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)] public string Name; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)] public string SurName; } 我设置了struct字段的

我有一个concat字符串数据的结构

 public struct MyClass1
    {

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]
        public string Name;

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]
        public string SurName;
    }
我设置了struct字段的值

MyStruct mystr = new MyStruct();

mystr.Name = 'John';
mystr.SurName = 'Smith';
我想使用封送处理来连接这个字符串,并将值作为

约翰·史密斯


。是否可以使用编组?

使用反射而不是编组

 var myClass = new MyClass1 { Name = "John", SurName = "Smith" };
 Console.WriteLine(MyMarshal(myClass));

static string MyMarshal(object item)
{
  var values = new List<object>();
  foreach (var field in item.GetType().GetFields())
  {
    values.Add(field.GetValue(item));
  }
  return string.Join(" ", values.ToArray());
}

public struct MyClass1 
{  
    public string Name; 

    public string SurName; 
}

如果要连接字符串,请使用+运算符。封送处理是不相关的。总是有人试图让meSmith\0对于字符[5]来说已经太长。例如,使用Marshal.StructureToPtr。。我想要得到结果。我的目的是反序列化结构和concat值。