Я использовал TPH в Entity Framework для создания таблицы Inventory в моей базе данных.Дизайн шаблонов для разрешения зависимостей с использованием Autofac для Entity Framework Наследование TPH
public abstract class Inventory
{
public Guid Id { get; set; }
public DateTime On { get; set; }
}
public class CycleCountInventory : Inventory
{
public string Frequency { get; set; }
// and other properties
}
public class SkuGroupInventory : Inventory
{
public string SkuGroup { get; set; }
// and other properties
}
У меня есть требование, когда предметы могут быть добавлены в инвентарь. Однако поведение репозитория инвентаризации должно быть разным в зависимости от типа инвентаря. У меня есть класс обслуживания, который содержит ссылку на репозиторий следующим образом:
public class InventoryService : IInventoryService
{
public bool AddItems(Inventory inventory, IList<Guid> itemsGuidList)
{
// the inventory type is only known at this point
IInventoryRepo repo = (inventory is SkuGroupInventory)
? (IInventoryRepo) new SkuGroupInventoryRepo()
: new CycleCountInventoryRepo();
return repo.PerformInventory(itemsGuidList);
}
}
В настоящее время я загружающий различные реализации IInventoryRepo
вручную делает чек. Есть несколько проблем с этим подходом:
1. У меня есть Autofac для разрешения всех зависимостей ... этот подход делает мой код трудным для тестирования
2. По мере добавления большего количества типов запасов мой код станет тяжелым для управления
Есть ли какие-либо шаблоны (абстрактная фабрика/стратегия и т. д.), я могу использовать для делегирования зависимостей обратно в Autofac. Я уверен, что кто-то столкнулся бы с этим раньше. Благодаря!
я работал по той же схеме тоже .... рад узнать, что я на правильном пути. – Purusartha
прохладный. хорошо знать, что вы были на том же пути. и просто nit .. назовите завод как IInventoryRepoFactory, так как он создает репо, а не инвентарь –