【发布时间】:2022-01-04 17:21:27
【问题描述】:
我正在尝试将用 java 编写的 SDK 移植到 C#。
在这个软件中有许多“处理程序”接口和几种方法(例如:attemptSomethingHandler 和success() 以及几种不同的故障方法)。然后在调用类中匿名实现和实例化该接口,并传递给SomethingModel 类的attemptSomething 方法。这是一个异步方法,有几个地方可能会失败或调用另一个方法(传递处理程序)。这样attemptSomethingHandler的匿名实现就可以引用调用attemptSomething的类中的私有方法。
在 C# 中,无法匿名实现接口。我可以显式地实现一个新类,但是这个实现对于这个调用类来说是唯一的,并且不会用于其他任何事情。更重要的是,我将无法访问调用类中的私有方法,而我需要并且不想公开这些方法。
基本上,我需要根据SomethingModel 类方法中发生的情况从调用类运行不同的代码。
我一直在阅读委托,但这需要传递与处理程序接口中的方法一样多的委托(据我所知)。 在 C# 中执行此操作的适当方法是什么?我觉得我错过了一个非常常见的编程策略。必须有一种简单、干净的方法来构建和解决这个问题。
【问题讨论】:
-
也许值得用您尝试移植的 java 代码以及到目前为止的尝试来说明您的问题?
-
你的问题不清楚,所以我不会 VTC,但你可能想看看stackoverflow.com/questions/191013/…
-
你可以在内部类中实现接口。这样,您就可以访问调用类的私有成员。
-
听起来你想要一个私有的嵌套类。
-
Java 中的许多匿名类型都可以用 C# 中的事件或 lambdas 代替。