我有接口的實現,我必須解決: 下面是一個例子:實現接口擴展屬性(?繼承)
interface ISettingsBase
{
string Name { get; set;}
DateTime TimeStamp { get; set; }
}
public class SettingsBase : ISettingsBase
{
public string Name { get; set; }
public DateTime TimeStamp { get; set; }
}
interface IWorkerBase
{
ISettingsBase Settings { get; set; }
}
public class WorkerBase: ISettingsBase
{
public ISettingsBase Settings { get; set; }
}
interface IExtendedSettings : ISettingsBase
{
string FilePath { get; set; }
}
interface IWorkerExtended : IWorkerBase
{
// This configuration property should respect those of
// the IWorkerBase and increase the features.
IExtendedSettings Settings { get; set; }
}
public class WorkerExtended : WorkerBase, IWorkerExtended
{
...
...
public IExtendedSettings Settings { get; set; }
}
的問題是,編譯器告訴我,有一個錯誤在WorkerExtended,並且我不尊重IWorkerBase.Settings接口的實現。問題是我需要新的改進類還支持具有更多屬性的配置。
它只是感覺你有太多的接口和太多的實現。你的客戶如何知道它有一個'WorkerExtended'實例(而不僅僅是'IWorkerBase'的一個實例),調用它的'Settings'會返回一個'IExtendedSettings'實例? – user270576
@ user270576對不起,我應該在這個例子中更詳細一些,我不能複製原始代碼,因爲它更復雜一些。實際上,WorkerBase應該是一個具有一些基本功能的抽象類。我認爲最初的想法是強制工人有一個基本的配置和通用的功能,但變化使他們不同,所以他們也有額外的配置。 – Cheva
仍然不能回答我的問題:消費者類將如何知道它有'IWorkerExtended'實例而不是'IWorkerBase'實例?它如何知道調用'myWorker.Settings.FilePath'? – user270576