2015-02-23 86 views
0

我正在尝试编写一个C#程序。该功能已经实现(但在Java中)。在C中实现Java的Listener#

有没有什么办法可以在像Java一样的方法中实现“DeviceController.OnDeviceControllerListener” - 接口? 我需要像在Java代码示例来实现和定制覆盖的方法(onError的,onRead和onInsert):

deviceController.setOnDeviceControllerListener(new DeviceController.OnDeviceControllerListener() { 
     @Override 
     public void onError(ControllerError.Error error, String message) { 
     } 

     @Override 
     public void onRead(MobileServiceList<Device> devices) { 
      if(devices == null || devices.size() == 0) { 
       deviceController.insert(context, device); 
      } 
     } 

     @Override 
     public void onInsert(Device device) { 
     } 
    }); 

我希望你明白我的问题。这很难为我解释。

+0

您可以重写java co的funcionality去C#? – puko 2015-02-23 14:20:58

+0

我已经写了整个其他功能。在我的程序中有一些异步方法,并且在它们的结尾我想返回到这个方法(onError,...) – TableCreek 2015-02-23 14:22:21

+0

使用诸如锐化之类的工具可以为您节省大量时间。 – 2015-02-23 14:29:22

回答

1

创建你自己的界面就像

interface IOnDeviceControllerListener 
{ 
     void OnError(ControllerError.Error error, String message); 
     void OnRead(MobileServiceList<Device> devices); 
     void OnInsert(Device device); 
} 

下一个类:

DeviceControllerListener : IOnDeviceControllerListener 
{ 
    // implementation 
} 

在你的控制器定义方法(在你的情况setOnDeviceControllerListener),它的参数是IOnDeviceControllerListener,在这种情况下,集实现DeviceControllerListener和IOnDeviceControllerListener的devicecontroller类调用方法的实现

+0

非常感谢您的回答。我认为这是不可能的,就像我在Java中那样做,所以我必须做出单独的类。 – TableCreek 2015-02-23 14:29:27

+0

@TableCreek - 正确,C#不支持像你的例子那样的匿名内部类。类似于侦听器接口的习惯C#方式是使用事件和委托来代替。 – Paolo 2015-02-23 14:37:13

+0

它被称为内部类...谢谢:) 好的,我会问谷歌有关事件和代表的更多信息。 – TableCreek 2015-02-23 14:46:26