gpt4 book ai didi

c# - 从另一个类调用委托(delegate)方法

转载 作者:太空狗 更新时间:2023-10-30 03:42:22 28 4
gpt4 key购买 nike

我无法弄清楚如何在 C# 中对跨类的委托(delegate)方法调用进行编程。我来自 Objective-C 的世界,这可能让我感到困惑。在 Objective-C 中,我可以在子类中分配一个委托(delegate)对象作为父类(即 childViewcontroller.delegate = self;)。然后我可以使用以下方法在委托(delegate)类中触发一个方法:

if([delegate respondsToSelector:@selector(methodName:)]) {
[delegate methodName:parametersgohere];
}

但是,我不知道如何在 C# 中执行此操作。我已经阅读了一些关于 C# 委托(delegate)的一般信息(例如 here ),但我仍然卡住了。

有什么例子可以解释吗?

这是我的完整场景:我有 classA 实例化 classB 的实例。 ClassB 触发一个方法(调用 Web 服务),响应后,我想触发 classA 中的一个方法。

是否有任何“Hello World”类型的教程可以解释这方面的基础知识?

最佳答案

委托(delegate)是指向方法的对象,无论是静态方法还是实例方法。因此,对于您的示例,您只需使用事件模型:

class Caller {
public void Call() {
new Callee().DoSomething(this.Callback); // Pass in a delegate of this instance
}

public void Callback() {
Console.WriteLine("Callback called!");
}
}

class Callee {
public void DoSomething(Action callback) {
// Do stuff
callback(); // Call the callback
}
}

...

new Caller().Call(); // Callback called!

Caller 实例将委托(delegate)传递给 Callee 实例的 DoSomething 方法,后者又调用指向的方法,即Caller 实例的 Callback 方法。

关于c# - 从另一个类调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094302/

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