2012-03-15 16 views
-1

私は、連結文字列データの構造体を持っています。構造体を文字列にマーシャリング

public struct MyClass1 
    { 

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

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

値のフィールドを設定しました。

MyStruct mystr = new MyStruct(); 

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

私はマーシャリングを使用してこの文字列をCONCATと

"ジョン・スミス"

として値を取得したいです。マーシャリングを使用することは可能ですか?

+2

文字列を連結する場合は、 '+'演算子を使用します。マーシャリングは無関係です。 –

+1

誰かがいつも私を驚かせます – Steve

+1

'Smith \ 0'はすでに' char [5] 'には長すぎます。たとえばMarshal.StructureToPtr(..)を使用して –

答えて

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; 
} 
関連する問題