将PSObject实例解析为C#对象

阿米尔·卡茨(Amir Katz)

如何将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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章