提问人:HABosch 提问时间:5/18/2023 最后编辑:DavidHABosch 更新时间:5/18/2023 访问量:48
需要处理从 C# 匿名类型传递的对象
Need to process objects passed from C# anonymous type
问:
我有一个匿名类型,其结构如下:
{Contact = {BO.AgtContact}, Agency = {BO.Agent}}
AgtContact 和 Agent 是类
我目前正在我的主代码块中循环访问匿名类型以处理其内容。
我想将其提取为类似
public someReturnType MyMethod(IEnumerable<dynamic> list)
{
Loop over list
var contact = list.AgtContact
contact.field = set field value
End loop
return someReturnType (same as IEnumerable<dynamic> that was passed in)
}
我希望这是有道理的。 任何帮助,非常感谢
答:
1赞
Guru Stron
5/18/2023
#1
我强烈建议只创建一个类型(在带有 s 的最新语言版本中非常方便)并使用它而不是匿名类型。record
或者,您可以尝试使用泛型。类似这些内容:
public ICollection<T> MyMethod<T>(IEnumerable<T> list, Func<T, AgtContact> getter)
{
var enumerated = list as ICollection<T> ?? list.ToArray();
foreach (var t in enumerated)
{
var agtContact = getter(t); //since AgtContact is a class
agtContact.PropOfField = ...;
}
return enumerated;
}
和用法:
var colletionOfAnonTypes = ...
MyMethod(colletionOfAnonTypes, arg => arg.Contact);
评论
{Contact, Agency}
(Contact, Agency)