Для изучения я создал новое приложение MVC с нуля на основе существующего (и работающего) решения. Проблема в том, что мой класс UnitOfWorkFactory не инициализирован, и я не знаю почему?
Вот мой класс:
public class OrderSampleUserService : ServiceBase, IOrderSampleUserService
{
public IEnumerable<Order> GetOrders()
{
using (var unitOfWork = UnitOfWorkFactory.Create())
{
var orderRepository = unitOfWork.Create<Order>();
return orderRepository.GetAll().ToList();
}
}
}
Как видите, это довольно простой класс. Этот класс наследует ServiceBase, который описан ниже:
public class ServiceBase
{
[Inject]
public IUnitOfWorkFactory UnitOfWorkFactory { get; set; }
}
Этот класс ServiceBase содержит только UnitOfWorkFactory, который инициализируется с атрибутом Inject. Похоже, что инъекция произошла не так, как ожидалось.
И ниже - UnitOfWorkFactory:
public class UnitOfWorkFactory : IUnitOfWorkFactory
{
public IUnitOfWork Create()
{
var unitOfWork = new UnitOfWork();
unitOfWork.SetupObjectContext();
return unitOfWork;
}
}
Итак, я поместил точку останова в класс Create выше, и эта точка останова никогда не достигается. Это моя проблема: UnitOfWork никогда не инициализируется. Я потратил несколько часов, пытаясь выяснить, в чем проблема, но безуспешно.

Как я уже сказал в начале, этот код является копией / pase другого решения, которое работает довольно хорошо. Поэтому я проверил свой код и не нашел различий.
Спасибо.
UPDATE
Вот инициализация контейнера IocContainer:
public class UnitOfWork : IUnitOfWork
{
private ObjectContext _ObjectContext;
private IocContainer _Container;
public UnitOfWork()
{
_Container = new IocContainer();
}
public void SetupObjectContext()
{
_ObjectContext = new ObjectContext();
_Container.BindToInstance<ObjectContext>(_ObjectContext);
}
public Repository<TRepository> Create<TRepository>() where TRepository : class
{
// As long as we registered created object context instance in child container
// it will be available now to repositories during resolve
return new Repository<TRepository>(_ObjectContext);
}
public void Commit()
{
_ObjectContext.SaveChanges();
}
public void Dispose()
{
_ObjectContext.Dispose();
}
}