I'm trying to register some services on a base controller that will available per request.
public interface IInstagramApiService
{
}
public interface IApiServiceConfiguration
{
string CacheKeyPrefix { get; }
}
Then I have some concrete implementations of these
public class InstagramApiService : IInstagramApiService
{
IApiServiceConfiguration ApiServiceConfiguration { get; set; }
public InstagramApiService(IApiServiceConfiguration apiServiceConfiguration)
{
ApiServiceConfiguration = apiServiceConfiguration;
}
}
public class ApiServiceConfiguration : IApiServiceConfiguration
{
public string CacheKeyPrefix
{
get;
set;
}
}
Then I have base controller that I want to register this service too;
public class BaseController : Controller
{
IInstagramApiService InstagramApiService { get; set; }
}
So in my app start up I have this initialization;
var instagramApiServiceConfiguration = new ApiServiceConfiguration() {
CacheKeyPrefix = "The Cache Key Prefix",
};
container.Register<IInstagramApiService>((factory) => new InstagramApiService(instagramApiServiceConfiguration), new PerRequestLifeTime());
But when I check the InstagramApiService on the BaseController it's always null. What is the correct way to set this up so I will always have the InstagramApiService ready to use within my controllers?
Turns out I was missing a simple public modifier on my InstagramApiService inside the BaseController.
public class BaseController : Controller
{
public IInstagramApiService InstagramApiService { get; set; }
}