首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >怎样才能拥有一个实现接口并继承自抽象类的类呢?(C# .NET 3.5)

怎样才能拥有一个实现接口并继承自抽象类的类呢?(C# .NET 3.5)
EN

Stack Overflow用户
提问于 2009-03-19 05:31:44
回答 2查看 503关注 0票数 0

我有一种情况,我认为我需要一个接口和一个抽象类提供的功能。

我正在创建要在模拟中使用的模型。每个模型都包含在一个实现IModel接口的C#类中(这是我的设计,因此可以修改)。我还创建了一个c++非托管Win32 DLL,它充当我的C#模型类和模拟环境之间的桥梁。模型类是通过COM调用的,因此需要一个接口。

我刚刚收到了一个新的要求,即这些模型类应该可以通过独立于模拟环境的web服务进行调用。现在这些模型是相当敏感的,客户端已经请求它们由客户端配置并在服务器上执行*。我想,如果我让模型类继承一个抽象类,然后在服务器上创建一个web服务方法,这是可能的:

代码语言:javascript
复制
public AbstractModel executeModel(AbstractModel modelForExecution)

它从客户端接收一个模型对象,执行它,并用结果填充它。

但是-我不能使用抽象类,因为模型需要COM实现的接口。

我如何协调这两个需求呢?有人告诉我,有可能让一个类实现一个接口,然后让那个类从一个抽象类派生,但我找不到任何这样的例子。如果可能,它的语法是什么?如果不可能,我还能做什么?

*模型类实际上调用了一个古老的fortran可执行文件,因此类的模型配置不会提供太多有关模型如何工作的信息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-19 05:40:22

代码语言:javascript
复制
public abstract class Base{}
public interface IBase{}
public Something: Base, IBase{} 
// the interface needs to go after the base class
票数 5
EN

Stack Overflow用户

发布于 2009-03-19 05:47:35

我会尝试让您的抽象类实现接口(并将方法作为抽象方法)。然后每个实现只是抽象类的子类化。我想这应该行得通。

代码语言:javascript
复制
public interface IModel {
  void doSomething();
}

public abstract class AbstractModel : IModel {
  public abstract void doSomething();
}

public class MyModel : AbstractModel {
  public void doSomething() {
    // code goes here
  }
}

你可能必须在实现方法上使用'overrides‘关键字(编译器会告诉你)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/661152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档