对于也使用C#.Net
的Objective-C开发人员来说,这是一个C#.net问题如您所知, Objective-C 您可以将方法名称解析为选择器;并且该方法也可以属于外部类。
我希望能够在C#.Net中使用这种类型的方法,因为它比创建事件的负载更加清晰,这些事件可能变得混乱且难以管理。
如果可以,我该如何实现?谢谢!
示例:
public class Main
{
public void MyProcess(Callback toMethod)
{
// do some fancy stuff and send it to callback object
toMethod(result);
}
}
public class Something
{
public void RunMethod()
{
MyProcess(Method1);
MyProcess(Method2);
}
private void Method1(object result)
{
// do stuff for this callback
}
private void Method2(object result)
{
// do stuff for this callback
}
}
答案 0 :(得分:0)
我不了解Objective-C,但我认为你想要这样的东西:
public class Main
{
public void MyProcess(Action<object> toMethod, object result)
{
// do some fancy stuff and send it to callback object
toMethod(result);
}
}
public class Something
{
public void RunMethod()
{
object result = new object();
MyProcess(Method1, result);
MyProcess(Method2, result);
}
private void Method1(object result)
{
// do stuff for this callback
}
private void Method2(object result)
{
// do stuff for this callback
}
}
答案 1 :(得分:0)
您必须使用Delegates。根据您问题中的代码,您将声明一个委托:
public delegate void MethodDelegate(object result);
流程方法的签名更改为以下内容:
public void MyProcess(MethodDelegate toMethod)
{
// do some fancy stuff and send it to callback object
toMethod(result);
}
然后你会调用进程
public void RunMethod()
{
MyProcess(new MethodDelegate(Method1));
MyProcess(new MethodDelegate(Method1));
}