Я создаю API и хочу предоставить интерфейс под названием IReportFields. Я хочу, чтобы клиент реализовал этот класс и в основном получал поля из любого источника данных (обычно базы данных).
В моем интерфейсе IReport, который я хочувзять экземпляр IReportFields (может быть больше одного, в моем приложении, по крайней мере, 4), затем сделать все, что мне нужно сделать в этом интерфейсе, обычно это будет что-то вроде отчета о сборке или что-то еще.
Так, например:
public interface IReportField
{
ICollection<ReportField> GetFields();
}
Могут быть поля отчета различного типа, например, они могут быть получены для 3 или 4 разных таблиц базы данных и т. Д.
Затем на моем основном интерфейсеЯ буду:
public interface IReport
{
string GetReport(IReportField[] field);
}
Вопрос:
IReportFields может иметь несколько реализаций, то есть много разных типов полей, как мне вызвать метод GetReport помня, что я использую Ninject , как мне соединить мои интерфейсы?
// этот бит, где я застрял, как я передаю в параметрах as Я не хочу жесткой зависимости от класса, который требует от меня получения отчета
IFieldReport field1 = new FieldImp1();
IFieldReport field2 = new FieldImp2();
var report = GetReport(feild1, field2);