gpt4 book ai didi

c# - 如何使用类拦截委托(delegate)调用

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

基本上,我想要存档的是拦截对委托(delegate)的调用的方法。我正在考虑定义一个可以用于它的类。像这样的东西:

timer.Elapsed += new MyClass((sender, e)=> { /* do stuff */});

如何定义 MyClass以一种通用的方式?

我可以让 Myclass固有的 ElapsedEventHandler , 但它只能用于此事件。我在想让 MyClass固有的 Action<object, EventArg>因为你也可以写

timer.Elapsed += (sender, e) => { /* do stuff */ }

但我没有让那个工作。有什么建议吗?

最佳答案

您不能创建将被委托(delegate)的类,但是您可以从您的类中创建一个委托(delegate)。

考虑一个类:

public class MyClass 
{
public void OnTimerElapsed(object sender, EventArgs e)
{
}
}

现在将类方法连接到事件:

var obj = new MyClass();
timer.Elapsed += obj.OnTimerElapsed;

你也可以断开它:

timer.Elapsed -= obj.OnTimerElapsed;

您应该阅读更多有关 C# 中的事件的信息,例如此处:https://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx

关于c# - 如何使用类拦截委托(delegate)调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32201022/

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