gpt4 book ai didi

c# - 如何将委托(delegate)分配为某些已实现接口(interface)的方法

转载 作者:行者123 更新时间:2023-11-30 20:05:24 25 4
gpt4 key购买 nike

假设我有一个接口(interface),它指定了两个没有参数的 void 方法。我如何在实现该接口(interface)的某个类中“插入”两个 System.Action(T) 方法?在我下面的示例中,这将在 void PushFoo(Action bar1, Action bar2) 方法中:

public interface IFoo
{
void Bar1();
void Bar2();
}

public class Bla
{
Stack<IFoo> _fooStack = new Stack<IFoo>();

public void PushFoo(IFoo foo)
{
_fooStack.Push(foo);
}

public void PushFoo(Action bar1, Action bar2)
{
IFoo foo = null;

// assign bar1 and bar2 to foo
//foo = ... ;

_fooStack.Push(foo);
}
}

最佳答案

public Class ActionableFoo : IFoo
{
Action _bar1, _bar2;

public ActionableFoo(Action b1, Action b2)
{
_bar1 = b1;
_bar2 = b2;
}

public void Bar1() { if(_bar1 != null) _bar1(); }
public void Bar2() { if(_bar2 != null) _bar2(); }
}

然后,在您的示例中:

public void PushFoo(Action bar1, Action bar2)
{
IFoo foo = new ActionableFoo(bar1, bar2);
_fooStack.Push(foo);
}

关于c# - 如何将委托(delegate)分配为某些已实现接口(interface)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11447644/

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