gpt4 book ai didi

c# - 注入(inject)一个事件作为依赖

转载 作者:太空狗 更新时间:2023-10-29 22:20:30 24 4
gpt4 key购买 nike

我需要我的类来处理 System.Windows.Forms.Application.Idle - 但是,我想删除该特定依赖项以便我可以对其进行单元测试。所以理想情况下,我想在构造函数中传递它——类似于:

var myObj = new MyClass(System.Windows.Forms.Application.Idle);

目前,它提示我只能将事件与 += 和 -= 运算符一起使用。有办法做到这一点吗?

最佳答案

您可以抽象接口(interface)背后的事件:

public interface IIdlingSource
{
event EventHandler Idle;
}

public sealed class ApplicationIdlingSource : IIdlingSource
{
public event EventHandler Idle
{
add { System.Windows.Forms.Application.Idle += value; }
remove { System.Windows.Forms.Application.Idle -= value; }
}
}

public class MyClass
{
public MyClass(IIdlingSource idlingSource)
{
idlingSource.Idle += OnIdle;
}

private void OnIdle(object sender, EventArgs e)
{
...
}
}

// Usage

new MyClass(new ApplicationIdlingSource());

关于c# - 注入(inject)一个事件作为依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5826475/

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