2015-02-23 24 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