Вот моя установка с Asp.Net Mvc 3:
public abstract class BaseProvider
{
protected ICache Cache;
}
public interface ICache
{
void Add(string key, object data);
void Remove(string key);
...
}
public class MyCache : ICache
{
private static MemoryCache cache = MemoryCache.Default;
void Add(string key, object data)
{
...
}
}
public interface IEmployeeProvider
{
IEnumerable<Employee> GetEmployees(string department);
}
public class EmployeeProvider:BaseProvider,IEmployeeProvider
{
public IEnumerable<Employee> GetEmployees(string department)
{
**if (Cache.Get("employees_"+department)!=null)**
}
}
Помеченная строка выдает ошибку о том, что Cache равен нулю.
Я пытался зарегистрировать базовый класс как тип, но, думаю, это неправильно.
Моя настройка Autofac выглядит следующим образом:
builder.Register(r => new EmployeeProvider()).As<IEmployeeProvider>().InstancePerHttpRequest();
builder.Register(r => new MyCache()).As<ICache>().InstancePerHttpRequest();
builder.RegisterType<BaseProvider>().PropertiesAutowired();
Чего мне не хватает?