autofac baseclass属性为null

时间:2012-02-15 00:02:05

标签: autofac

以下是我使用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为null。 我试图将基类注册为类型,但我想这是错误的。 我的Autofac设置如下:

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

我错过了什么?

1 个答案:

答案 0 :(得分:1)

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

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