У меня есть базовая DLL, которая определяет некоторую базовую структуру и работу для ключевой концепции в нашем бизнесе. Эта DLL затем включается в определенные веб-сервисы для каждого поставщика, которые реализуют определенные бизнес-правила для взаимодействия с этим поставщиком. (Хотя основные концепции одинаковы, реализации очень разные и могут изменяться независимо.)
В базовой DLL у меня есть ряд интерфейсов, настроенных как таковые
public interface IVendor
{
string Name { get; set; }
}
public interface IVendor<TC> : IVendor where TC : IAccount
{
IEnumerable<TC> Accounts { get; set; }
}
public interface IAccount
{
string Name { get; set; }
}
public interface IAccount<TP, TC> : IAccount where TP : IVendor
where TC : IExecutionPeriod
{
TP Vendor{ get; set; }
IEnumerable<TC> ExecutionPeriods { get; set; }
}
Это продолжается еще на нескольких уровнях, и все прекрасно скомпилируется.
Проблема возникает, когда я пытаюсь реализовать это в сервисе.
public class FirstVendor : IVendor<FirstVendorAccount>
{
public string Name { get; set; }
public IEnumerable<FirstVendorAccount> Accounts { get; set;}
}
public class FirstVendorAccount : IAccount<FirstVendor, FirstVendorExecutionPeriod>
{
public FirstVendor Vendor { get; set; }
public string Name { get; set; }
public IEnumerable<FirstVendorExecutionPeriod> ExecutionPeriods { get; set; }
}
Я получаю сообщение об ошибке компилятора, что у IVendor, IAccount и т. Д. Нет параметров типа. Что особенно странно, потому что, когда я попросил его реализовать интерфейс, он включал всех членов обоих соответствующих интерфейсов.