IBaseSub<T>
требуется IBase
.Я говорю «требует», потому что он более точно отражает практические последствия, чем сказать, что он «наследует» IBase
, что подразумевает переопределение и другие вещи, которые просто не происходят с интерфейсами.Можно сказать, что класс, реализующий IBaseSub<T>
, реализует и то и другое, например:
public class MyClass : IBase, IBaseSub<YourObject>
Возвращаясь к тому, что я сказал о наследовании, - нет такой вещи с интерфейсами, что означает только то, что оба интерфейсаиметь свойство с тем же именем, производное не переопределяет и не скрывает базовое.Это означает, что теперь ваш класс должен буквально реализовать два свойства с одинаковым именем , чтобы выполнить оба контракта.Вы можете сделать это с помощью явной реализации :
public class MyClass : IBase, IBaseSub<YourObject>
{
public YourObject Property1 { get; set; }
MyObject IBase.Property1 { get; set; }
}