Я пытаюсь внедрить шаблон репозитория для целей обучения в проекте.Я использую MVVM Light для регистрации интерфейсов и пытаюсь внедрить их в модель представления.
Я удалил все остальные репозитории для удобства чтения и включил только RuleRepository.
Просмотр модели локатора
Код разрывается при попытке зарегистрировать IUnitOfWork и выдает ошибку - Тип не найден в кэше: YAI.BomConfigurator.Core.Context.BomConfiguratorContext.
Примечание. Не уверены, нужно ли мне регистрировать интерфейс IRepository здесь?
public class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
SimpleIoc.Default.Register<IUnitOfWork, UnitOfWork>();
}
else
{
SimpleIoc.Default.Register<IDataService, DataService>();
SimpleIoc.Default.Register<IUnitOfWork, UnitOfWork>();
}
SimpleIoc.Default.Register<LoginViewModel>();
}
public LoginViewModel LoginViewModel
{
get
{
return ServiceLocator.Current.GetInstance<LoginViewModel>();
}
}
}
LoginViewModel
Здесь я пытаюсь внедрить IUnitOfWork вмодель представления.
public class LoginViewModel : ViewModelBase
{
private readonly IUnitOfWork _UnitOfWork;
public LoginViewModel(IUnitOfWork unitOfWork)
{
_UnitOfWork = unitOfWork;
}
}
IUnitOfWork
public interface IUnitOfWork : IDisposable
{
IRuleRepository Rules { get; }
int Complete();
}
UnitOfWork
public class UnitOfWork : IUnitOfWork
{
private readonly BomConfiguratorContext _context;
public IRuleRepository Rules { get; private set; }
public UnitOfWork(BomConfiguratorContext context)
{
_context = context;
}
public int Complete()
{
return _context.SaveChanges();
}
public void Dispose()
{
_context.Dispose();
}
}
RuleRepository
public class RuleRepository : Repository<Rule>,IRuleRepository
{
public RuleRepository(BomConfiguratorContext context)
: base(context)
{
}
}
Я скопировал многое из этого видео с Mosh Hamedani youtube и попытался добавить бит, который мы добавляем в конструктор модели представления.Я новичок в внедрении зависимостей и контейнерах IOC, поэтому не знаю, что именно я делаю здесь неправильно.
Если бы кто-то мог дать мне хорошее объяснение того, что мне нужно изменить и т. Д., Это было бы здорово.Я знаю, что многие люди считают, что Шаблон «Единица работы / Репозиторий» является анти-шаблоном, но меня это не волнует, это исключительно для целей обучения.
Спасибо за любые предложения!