autofac 基类属性为空

autofac baseclass property is null

这是我使用 Asp.Net Mvc 3 的设置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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 设置是这样的:

1
2
3
builder.Register(r => new EmployeeProvider()).As<IEmployeeProvider>().InstancePerHttpRequest();
builder.Register(r => new MyCache()).As<ICache>().InstancePerHttpRequest();
builder.RegisterType<BaseProvider>().PropertiesAutowired();

我错过了什么?


您应该使用 PropertiesAutowired() 注册 EmployeeProvider 或扫描程序集以查找从 BaseProvider 继承的每个类。

第一次注册忘记了PropertiesAutowired(),第三行忘记了EmployeeProvider