1

我在为 xamarin.ios 委托创建类时遇到问题。在 iOS 中,我们使用协议来实现委托,但在这里我不能将接口实现为委托。让我澄清这个概念。我在一个文件中有一个接口,例如:

public interface SendBackDelegate
{
     void sendBackData();
}

public class SelectList
{

}

在其他文件中,我有这样的主类:

public class ShowList: SendBackDelegate
{
    public ShowList()
    {
        SelectList obj = new SelectList();
        obj.delegate = this;
    }
    void sendBackData()
    {
        Console.WriteLine("Send Back DATA");
    }
}

现在你能告诉我这个接口是如何在 SelectList 类中实现的吗?

谢谢

4

2 回答 2

2

您可以使用类似接口的协议,只需要创建接口的引用对象,它就可以拥有已经实现接口方法的类对象。你的例子也很清楚。

public interface SendBackDelegate
{
     void sendBackData();
}

public class SelectList
{
     ShowList  showListObj = new ShowList();
     SendBackDelegate delegate = showListObj;
     delegate.sendBackData();
     //this will call the method sendBackData()  of class ShowList.    
}    

public class ShowList: SendBackDelegate
{
    public ShowList()
    {
        SelectList obj = new SelectList();
        obj.delegate = this;
    }
    void sendBackData()
    {
        Console.WriteLine("Send Back DATA");
    }
}

如果您仍有疑问,请告诉我。

于 2017-02-23T14:22:19.883 回答
0

我不再在 Xamarin.iOS 上使用委托。不过我更喜欢使用动作。

class MainClass
{
    public static void Main (string[] args)
    {
        var x = new ShowList ();
    }
}

public interface SendBackDelegate
{
    void sendBackData ();
}

public class ShowList : SendBackDelegate
{
    public ShowList ()
    {
        SelectList obj = new SelectList (sendBackData);
    }

    public void sendBackData ()
    {
        Console.WriteLine ("Send Back DATA");
    }
}

public class SelectList
{
    Action _callback;

    public SelectList (Action callback)
    {
        _callback = callback;
        Ticker ();
    }

    private void Ticker ()
    {
        _callback ();
    }
}
于 2016-06-02T17:10:27.243 回答