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

标签 c# objective-c

我无法弄清楚如何在 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/

相关文章:

ios - CGImageCreateWithImageInRect 持有图像数据 - 泄漏?

iphone - 使用 GCD 创建循环

c# - 将数据添加到现有 DataTable 的 DataRow

c# - 如何在 nhibernate 中映射有序列表?

c# - 如何阻止来自另一个窗体的鼠标点击事件

objective-c - 在 OSX 10.8 SDK/objective-c 中拖动一个按钮

iphone - 用于 iOS 开发的 LLVM 与 GCC

ios - 自定义 transitionFromViewController 抛出错误

c# - 缩短整数数组

c# - Xamarin.iOS系统异常