簡體   English   中英

我怎樣才能擁有一個實現接口並繼承自抽象 class 的 class? (C# .NET 3.5)

[英]How can I have a class that implements an interface and inherits from an abstract class? (C# .NET 3.5)

我有一種情況,我認為我需要接口和抽象 class 提供的功能。

我正在創建要在模擬中使用的模型。 每個 model 都包含在 C# class 中,它實現了 IModel 接口(我的設計,因此可以修改)。 我還創建了一個 c++ 非托管 Win32 DLL 作為我的 C# Z20F35E630DAF494DBFACZ3F6 類和模擬環境之間的橋梁。 model 類通過 COM 調用,因此需要接口。

我剛剛收到一個新要求,即這些 model 類應該可以通過 web 服務獨立於模擬環境進行調用。 現在這些模型相當敏感,客戶端要求它們由客戶端配置並在服務器上執行*。 我認為如果我讓 model 類繼承自抽象 class,然后在服務器上創建 web 服務方法,這將是可能的:

public AbstractModel executeModel(AbstractModel modelForExecution)

從客戶端接收 model object,執行它並用結果填充它。

但是 - 我不能使用抽象的 class 因為模型需要 COM 實現的接口。

我怎樣才能調和這兩個要求? 有人告訴我,可以讓 class 實現一個接口,並讓 class 從抽象 class 派生,但我找不到任何例子。 如果可能的話,語法是什么? 如果不可能,我還能做什么?

*the model classes actually call an ancient fortran executable, so the model configuration of the classes does not give away too much information about how the model works.

public abstract class Base{}
public interface IBase{}
public Something: Base, IBase{} 
// the interface needs to go after the base class

我會嘗試讓您的抽象 class 實現接口(並將方法作為抽象)。 然后每個實現都只是抽象 class 的子類。 我認為這應該有效。

public interface IModel {
  void doSomething();
}

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

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

您可能必須在實現方法上使用“覆蓋”關鍵字(編譯器會告訴您)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM