使用 lightinject 服务始终为 null
Service is always null using lightinject
我正在尝试在基本控制器上注册一些服务,这些服务将根据请求提供。
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; }
}
所以在我的应用程序启动时我有这个初始化;
var instagramApiServiceConfiguration = new ApiServiceConfiguration() {
CacheKeyPrefix = "The Cache Key Prefix",
};
container.Register<IInstagramApiService>((factory) => new InstagramApiService(instagramApiServiceConfiguration), new PerRequestLifeTime());
但是当我检查 BaseController
上的 InstagramApiService
时,它总是 null
。正确的设置方法是什么,这样我就可以随时在我的控制器中使用 InstagramApiService
?
原来我在 BaseController
中的 InstagramApiService
上缺少一个简单的 public
修饰符。
public class BaseController : Controller
{
public IInstagramApiService InstagramApiService { get; set; }
}
我正在尝试在基本控制器上注册一些服务,这些服务将根据请求提供。
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; }
}
所以在我的应用程序启动时我有这个初始化;
var instagramApiServiceConfiguration = new ApiServiceConfiguration() {
CacheKeyPrefix = "The Cache Key Prefix",
};
container.Register<IInstagramApiService>((factory) => new InstagramApiService(instagramApiServiceConfiguration), new PerRequestLifeTime());
但是当我检查 BaseController
上的 InstagramApiService
时,它总是 null
。正确的设置方法是什么,这样我就可以随时在我的控制器中使用 InstagramApiService
?
原来我在 BaseController
中的 InstagramApiService
上缺少一个简单的 public
修饰符。
public class BaseController : Controller
{
public IInstagramApiService InstagramApiService { get; set; }
}