Где разместить фабричный метод? - PullRequest
1 голос
/ 29 июня 2019

Я реализую фабричный шаблон для поддержки генерации отчетов с использованием 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.Моя проблема:

Где мне нужен фабричный класс, чтобы я мог создавать конкретные классы, не добавляя ненужные ссылки на мой основной проект?

...