2016-06-27 8 views
0

Wie kann ich PSObject zu C# POCO Model Entity analysieren.Parse PSObject zu C# -Objekt

PSObject ist ein dynamisches Objekt, das diese Eigenschaften

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

Ich habe C# POCO-Modell, das die Felder passt enthält.

Gibt es eine nette Art zu werfen?

Antwort

3

Sie müssen entweder PSObject in eine gängige Darstellung umwandeln oder über PSObject.Properties iterieren und Felder von POCO mit Reflektion ausfüllen.

Dieser einfache serialize-deserialize Code mit Newtosoft.Json die ersten Art und Weise implementiert und kann auch für einfache Fälle arbeiten:

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

Ausgang:

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

ad Kreis ref mit NewtonSoft .. Ich werde Versuche es noch einmal. –

+0

Arbeitete ... Nizza! –