将编组结构转换为字符串

时间:2012-03-15 15:04:25

标签: c#

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

 public struct MyClass1
    {

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

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

我设置值struct fields。

MyStruct mystr = new MyStruct();

mystr.Name = 'John';
mystr.SurName = 'Smith';

我想通过使用Marshaling来连接此字符串,并将值作为

  

“约翰史密斯”

。是否可以使用编组?

1 个答案:

答案 0 :(得分:0)

使用反射代替编组。

 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; 
}