如何强制多个接口包含相同的属性?

Jed*_*Jed 3 c# inheritance properties interface

我正在尝试找出一种方法来强制我的所有接口包含相同名称/类型的属性。

例如:我有两个接口;IGetAlarms 和 IGetDiagnostics。每个接口都将包含特定于接口本身的属性,但是我想强制这两个接口(以及以后可能添加的所有其他接口)包含同名的属性。因此,结果可能如下所示:

interface IGetAlarms
{
    string GetAlarms();
    DateTime LastRuntime { get; set; }
}

interface IGetDiagnostics
{
    string GetDiagnostics();
    DateTime LastRuntime { get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

请注意,这两个接口都包含名为 LastRuntime 的 DateTime 属性。

我想知道是否有某种方法可以强制稍后添加的其他接口包含 DateTime LastRuntime 属性。我天真地尝试让我的所有接口实现另一个接口(IService) - 其中包括 LastRuntime 属性。但是,这并不能解决我的问题,因为这只是强制类实现该属性 - 而不是所有接口。

谢谢。

Ant*_*ram 5

一个接口可以继承其他接口。

interface IDerived : IBase
{
    string Foo { get; set; }
}

interface IBase
{
    DateTime LastRunDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

任何从 IDerived 派生的类也必须实现 IBase 的方法/属性。

class Derived : IDerived 
{
    #region IDerived Members

    public string Foo { get; set; }

    #endregion

    #region IBase Members

    public DateTime LastRunDate {get;set;}

    #endregion
}
Run Code Online (Sandbox Code Playgroud)