2016-06-27 6 views
0

PSObjectをC#POCOモデルエンティティに解析する方法を教えてください。PSObjectをC#オブジェクトに解析する

PSObjectは、これらのプロパティ

@{Name=David; Diff=0.0268161397964839; File=Output.txt} 

私は、これらのフィールドに合ったC#POCOモデルを持っているが含まれている動的なオブジェクトです。

良いキャスト方法はありますか?

答えて

3

PSObjectを一般的な表現に変換するか、PSObject.Propertiesを繰り返して、反射を使用してPOCOのフィールドに入力する必要があります。

Newtosoft.Jsonとこの単純な直列化・デシリアライズコードは最初の方法を実装し、簡単な例のために働く可能性があります

public class MyInfo 
{ 
    public string Name { get; set; } 
    public double Diff { get; set; } 
    public string File { get; set; } 
} 

static void Main(string[] args) 
{ 
    PSObject obj = PSObject.AsPSObject(new { Name = "David", Diff = 0.2, File = "output.txt" }); 

    var serialized = JsonConvert.SerializeObject(obj.Properties.ToDictionary(k => k.Name, v => v.Value)); 
    Console.WriteLine(serialized); 

    var deseialized = JsonConvert.DeserializeObject<MyInfo>(serialized); 
    Console.WriteLine($"Name: {deseialized.Name}"); 
    Console.WriteLine($"Diff: {deseialized.Diff}"); 
    Console.WriteLine($"File: {deseialized.File}"); 
} 

出力:NewtonSoftと

{"Name":"David","Diff":0.2,"File":"output.txt"} 
Name: David 
Diff: 0,2 
File: output.txt 
+0

広告円形REF ..私は意志もう一度試してみてください。 –

+0

働いて...いいね! –

関連する問題