gpt4 book ai didi

c# - 使用 Func 设置子列表中项目的属性

转载 作者:太空宇宙 更新时间:2023-11-03 12:34:41 24 4
gpt4 key购买 nike

我有一个具有属性的父项和子项:

public class Parent
{
public bool IsValid { get; set; }
public Child ChildItem { get; set; }
public List<ChildListItem> ChildList { get; set; }
}

public class ChildItem
{
public bool IsValid { get; set; }
}

public class ChildListItem
{
public bool IsValid { get; set; }
}

我有一个函数,它采用通用函数列表来设置值:

foreach (Func<T, object> function in functions)
{
function.Invoke(Parent);
}

函数的填充方式如下:

public Func<T, object>[] functions { get; set; }

this.functions = FunctionsToArray<Parent>(x => x.IsValid = true,
x.Child.IsValid = true);

供引用:

public static Func<T, object>[] FunctionsToArray<T>(params Func<T, object>[] functions)
{
return functions.ToArray();
}

我想做的是设置每个子列表项,例如:

this.functions = FunctionsToArray<Parent>(x => x.IsValid = true,
x.Child.IsValid = true,
x.ChildList.<something>.IsValid = true);

建议/评论/任何内容将不胜感激。

最佳答案

首先,我认为您实际上是想使用 Action<Parent>而不是 Func<Parent, object>因为您的示例 lamba 表达式实际上没有返回任何内容。如果是这种情况,那么您只需要一个 lambda 表达式来迭代列表并设置值,这可以通过常规 foreach 来完成。

x => { foreach(var cli in x.ChildList) cli.IsValid = true; }

或者因为集合是 List你可以使用它的 ForEach方法

x => x.ChildList.ForEach(cli => cli.IsValid = true)

你甚至可以创建一个 lambda 来完成所有这三件事

x => 
{
x.IsValid = true;
x.Child.IsValud = true;
foreach(var cli in x.ChildLIst)
cli.IsValid = true;
}

关于c# - 使用 Func<T, object> 设置子列表中项目的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41486187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com