使用lightinject,服务始终为null

时间:2016-09-03 11:57:16

标签: light-inject

我正在尝试在每个请求可用的基本控制器上注册一些服务。

public interface IInstagramApiService
{
}

public interface IApiServiceConfiguration
{
    string CacheKeyPrefix { get; }
}

然后我有一些具体的实现

public class InstagramApiService : IInstagramApiService
{
   IApiServiceConfiguration ApiServiceConfiguration { get; set; }

   public InstagramApiService(IApiServiceConfiguration apiServiceConfiguration)
   {
       ApiServiceConfiguration = apiServiceConfiguration;
   }

}

public class ApiServiceConfiguration : IApiServiceConfiguration
{
    public string CacheKeyPrefix
    {
        get;
        set;
    }
}

然后我有基本控制器,我也想注册这个服务;

public class BaseController : Controller
{
    IInstagramApiService InstagramApiService { get; set; }        
}

所以在我的app启动时我有这个初始化;

var instagramApiServiceConfiguration = new ApiServiceConfiguration() { 
     CacheKeyPrefix = "The Cache Key Prefix",
};

container.Register<IInstagramApiService>((factory) => new InstagramApiService(instagramApiServiceConfiguration), new PerRequestLifeTime());

但是当我检查InstagramApiService上的BaseController时,它总是null。设置它的正确方法是什么,所以我总是准备好在我的控制器中使用InstagramApiService

1 个答案:

答案 0 :(得分:0)

原来我在public内的InstagramApiService上错过了一个简单的BaseController修饰符。

public class BaseController : Controller
{
    public IInstagramApiService InstagramApiService { get; set; }        
}