2

PSObject インスタンスを C# POCOモデル エンティティに解析するにはどうすればよいですか?

PSObject インスタンスは、次のプロパティを含む動的オブジェクトです。

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

それらのフィールドに適合する C# POCO モデルがあります。

うまくキャストする方法はありますか?

4

1 に答える 1

8

インスタンスを一般的な表現に変換するか、リフレクションを使用して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}");
}

出力:

{"Name":"David","Diff":0.2,"File":"output.txt"}
Name: David
Diff: 0,2
File: output.txt
于 2016-06-27T09:29:08.883 に答える