У меня есть 2 интерфейса, определенных в компоненте C#, где 1 интерфейс наследуется от другого универсального c интерфейса
public interface IRepository<T>
{
void Add(T obj);
void Update(T obj);
void Delete(T obj);
}
public interface IDataModelRepository :
IRepository<DataModel>
{
}
У меня есть компонент F #, в котором я определяю тип generi c с помощью параметр конструктора с универсальным интерфейсом c:
type Domain<T> ( getRepository:System.Func<IRepository<T>>) = ...
Затем я определяю производный тип, используя производный интерфейс:
type DataModelDomain ( getRepository:System.Func<IDataModelRepository>) =
inherit Domain<DataModel> (getRepository)
Это не компилируется, выдавая сообщение об ошибке на Тип DataModelDomain:
Тип 'IRepository' не соответствует типу 'IDataModelRepository'
Однако, если я определю эти типы 'Domain' в классах в C# Компонент аналогичным образом, он компилируется. Есть ли способ определить тип DataModelDomain, основанный на типе домена generi c и использующий производный интерфейс IDataModelRepository