Я реализую фабричный шаблон для поддержки генерации отчетов с использованием 2 разных библиотек отчетов (Crystal Reports и DevExpress).
Поэтому я создал проект библиотеки классов Default
и добавил к нему интерфейс IReport
,Затем я создал еще 2 проекта библиотеки классов, каждый из которых имеет класс, реализующий IReport.
. Кроме того, в моем проекте Default
я также добавил класс "Фабрика":
public sealed class ReportFactory : IReportFactory
{
public IReport Get(string extension)
{
switch (extension.ToLower())
{
case "rpt":
//TODO create crystal report instance
break;
case "rpx":
//TODO create devexpress report instance
break;
default:
throw new ArgumentNullException(nameof(extension));
}
}
}
Мое главное приложение имеет ссылку только на проект Default
.Моя проблема:
Где мне нужен фабричный класс, чтобы я мог создавать конкретные классы, не добавляя ненужные ссылки на мой основной проект?