如何在 c# 中创建类似于 powershell system.object 的对象
本文关键字:system powershell object 对象 类似于 创建 | 更新日期: 2023-09-27 18:35:31
在Powershell中,我可以使用列表执行以下操作
$obj = New-Object System.Object
foreach ($item in $list) {
$obj | Add-Member -type NoteProperty -name fname -value $item.firstname
$obj | Add-Member -type NoteProperty -name lname -value $item.lastname
}
$obj
这将打印出带有名字和姓氏的两列。
在 C# 中,我不确定如何完成此操作。是否需要为每个对象创建自定义类?或者有没有办法像在Powershell中一样在C#中动态执行此操作?
我得到的数据是JSON格式的。我可以使用 JSON.net 遍历结果列表,但我不确定如何将它们放入一个对象中,以便
WriteObject(customObj);
将产生与上述相同的输出。
顺便说一下,这一切都在PSCmdlet
类中,因此输出将始终转到控制台/cmd窗口。
谢谢。
在 C# 中,您应该对 PSObject
进行操作,以获得与 PowerShell 代码相同的结果:
PSObject obj=new PSObject();
obj.Properties.Add(new PSNoteProperty(fname,item.firstname));
obj.Properties.Add(new PSNoteProperty(lname,item.lastname));
WriteObject(obj);
最好的选择是使用匿名类型。您给出的代码(可能)等效于:
var obj = new List<dynamic>();
foreach (var item in list)
obj.Add(new { fname = item.firstname, lname = item.lastname });
//From here, use whatever output method you would like.
要访问成员,请使用obj[index].fname
获取index
fname
,obj[index].lname
获取index
lname
,obj.Select(item => item.fname)
获取所有fname
的IEnumerable<string>
,obj.Select(item => item.lname)
获取所有lname
的IEnumerable<string>
。