У меня есть библиотека классов, с которой в качестве ссылок связано несколько связанных библиотек классов, каждая из которых выполняет свой экспорт данных с использованием уникальных методов и свойств.
Чтобы выполнить один из этих экспортов, я вызываю «корневую» библиотеку классов из консольного приложения, передавая некоторую информацию о том, какой экспорт нужно запустить.
Этот корневой класс выполняет простую инструкцию Switch для вызова одного из экспортов. И хотя этот код работает нормально, я не думаю, что это самый элегантный способ сделать это.
Кто-то предложил использовать внедрение зависимостей, а кто-то сказал, что следует использовать интерфейс. Проведя некоторое исследование, я не смог найти хороший, простой пример, из которого я мог бы научиться кодировать такие реализации.
Ниже приведен оператор Switch. Мысли или идеи?
using System;
namespace ABC.Exporter
{
public class Exporter
{
public void Export(string vendorName, string exportName, Client client)
{
// which Export are we doing?
switch (vendorName)
{
case "Realogy" when exportName == "DashImportListings":
Realogy.Realogy.DashImportListings(client);
break;
case "Zillow" when exportName == "Listings":
Zillow.Zillow.Listings(client);
break;
case "Zillow" when exportName == "PastSales":
Zillow.Zillow.PastSales(client);
break;
case "Xpressdocs" when exportName == "RecipientListingFeed":
Xpressdocs.Xpressdocs.RecipientListingFeed(client);
break;
default:
throw new Exception("Invalid Export");
}
}
}
}