关于 运行 在 Java 而不是在 C# 中的接口的问题

A question about interfaces that run on Java but not in C#

我有一个服务层结构在 Java 上运行,没有任何错误。但是当我在 C# 上尝试时,它并没有像我预期的那样工作。我有一个公共服务接口 IService,它有一个方法 Update,returns 另一个接口 IUpdateResult。我有一个自定义服务界面 IAService,如下所示。

public interface IService 
{
    IUpdateResult Update();
}

public interface IAService : IService 
{     

} 

最后我有一个 UpdateResult class 实现了 IUpdateResult.

public class UpdateResult : IUpdateResult
{
}

我正在实施自定义服务 class,如下所示,它不允许我这样做。

public class AService : IAService
{
    public UpdateResult Update()
    {
        // bla bla
    }
}

正如我提到的,它正在按照我想要的方式 Java 工作。为什么 C# 给我错误?

As I mentioned it's working on Java the way I want. Why does C# give me error?

因为Java和C#是不同的语言,由不同的团队设计。 :)

别担心,因为 said, this feature is planned for C# 9

现在,您可以使用 explicit interface implementation:

public class AService : IAService
{
    public UpdateResult Update()
    {
        return null;
    }
    
    IUpdateResult IService.Update() { return Update(); }
}