我正在尝试将一个用Java编写的SDK移植到C#。
在这个软件中有许多“处理程序”接口,带有几个方法(例如:attemptSomethingHandler
具有success()
和几个不同的失败方法)。然后,在调用类中匿名实现并实例化该接口,并将其传递给SomethingModel
类的attemptSomething
方法。这是一个异步方法,并且具有多个可能失败或调用另一个方法的位置(传递处理程序)。这样,attemptSomethingHandler
的匿名实现可以引用调用attemptSomething
的类中的私有方法。
在C#中,无法匿名实现接口。我可以显式地实现一个新类,但此实现将仅适用于此调用类,并且不用于其他任何内容。更重要的是,我将无法访问调用类中的私有方法,但我需要这些方法而又不想公开它们。
基本上,根据SomethingModel
类方法中发生的情况,我需要从调用类中运行不同的代码。
我一直在研究委托,但这将需要传递与处理程序接口中的方法数量相同数量的委托(就我所知)。
在C#中应该如何处理这种情况?我觉得我错过了一种非常常见的编程策略。必须有一种简单、干净的方法来解决这个问题。