簡體   English   中英

將PSObject實例解析為C#對象

[英]Parse an PSObject instance to a C# object

如何將PSObject實例解析為C# POCO模型實體?

PSObject實例是一個動態對象,其中包含以下屬性:

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

我有適合這些領域的C#POCO模型。

有鑄造的好方法嗎?

您要么需要將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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM