0
Ninject를 사용하여 자체 호스트 웹 API 컨트롤러에 종속성을 주입하려고합니다. 나는 다음과 같이 성공 의존성을 주입입니다 :Ninject를 사용하여 초기화 된 인스턴스를 웹 API 컨트롤러의 생성자에 전달하는 방법
public static IKernel CreateKernel()
{
var kernel = new StandardKernel();
try
{
kernel.Bind<ITestAlert>().To<TestAlert>();
return kernel;
}
catch (Exception)
{
throw;
}
}
및
var server = WebApp.Start(baseAddress, (appBuilder) =>
{
// Configure Web API for self-host.
var config = new HttpConfiguration();
config.DependencyResolver = new NinjectResolver(NinjectConfig.CreateKernel());
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
});
그러나, 제가하고 싶은 것은
는 컨트롤러의 생성자에 외부에서 초기화 된 인스턴스를 전달 할 수 있습니다. 예를 들어, 내가 인스턴스를public interface ITestAlert
{
string Fullname { get; set; }
}
및 인스턴스가 내가 기대하는 것은 가져 오기 작업에서 "더미"출력 문자열을 얻을 수 있습니다
public ITestAlert _testAlert;
_testAlert = new TestAlert
{
FullName = "Dummy"
};
로 초기화
public class TestAlert : ITestAlert
{
private string _fullname;
public string Fullname
{
get
{
return _fullname;
}
set
{
_fullname = value;
}
}
}
초기화가 제어기의 방법,
private ITestAlert _testAlert = null;
public ValuesController(ITestAlert testAlert)
{
_testAlert = testAlert;
}
public string Get()
{
return _testAlert.Fullname;
}
그러나 "null"반환 만받을 수 있습니다! 컨트롤러의 생성자에 초기화 된 인스턴스를 전달하는 방법을 알려주십시오. 감사. 트릭을 할해야 바인딩 전용
이 완벽하게 작동합니다! 고마워. – user1133555
@ user1133555 nice! 대답을 받아들이는 것을 잊지 마라. – jbl