У меня есть базовая 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 и т. Д. Не имеют параметров типа. Что особенно странно, потому что, когда я попросил его реализовать интерфейс, он включал всех членов из обоих соответствующих интерфейсов.
Я почти не хочу этого говорить, но пример кода пахнет очень плохо. Я настоятельно рекомендую вам, ребята, переосмыслить этот подход, поскольку он кажется чрезмерно сложным для вашей заявленной цели. – NotMe