gpt4 book ai didi

c# - 如何创建执行操作的接口(interface)列表

转载 作者:行者123 更新时间:2023-12-01 16:28:11 24 4
gpt4 key购买 nike

我知道这个问题可以通过说 foreach(var item in items){item.doSomething()}; 来回答,但我所追求的略有不同。这是界面。

ManagableClass.cs

public interface ManagableClass : System.IDisposable
{
void Initialize();
}

下面是我希望看到的代码的样子

MainManagerClass.cs

public class MainManagerClass: ManagableClass
{
private List<ManagableClass> minions;

public void Initialize()
{
TellMinionsTo(Initialize);
}

public void Dispose()
{
TellMinionsTo(Dispose);
}

private void TellMinionsTo(Action doSomething)
{
foreach (ManagableClass minion in minions)
{
minion.doSomething();
}
}
}

我知道这里的代码不起作用,但看起来应该在 C# 中可行。有人知道这是否可以做到吗?如果没有,也不是世界末日,我只会在每个方法中执行 foreach

最佳答案

您的代码的问题在于您将委托(delegate)传递给特定实例(您自己)的方法,而您想要的是在所有 Minion 上调用特定方法。

您可以使用 lambda 表达式,例如

public void Dispose()
{
TellMinionsTo(minion=>minion.Dispose());
}


private void TellMinionsTo(Action<ManagableClass> doSomething)
{
foreach (ManagableClass minion in minions)
{
doSomething(minion);
}
}

我不喜欢直接使用List的方法。明天您将必须通过界面进行工作,并且您的 IList 可能根本不必是列表。

关于c# - 如何创建执行操作的接口(interface)列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23714657/

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