1
Ninject에서 Autofac으로 응용 프로그램을 이전하고 있습니다. Autofac - 인수 이름으로 해결
우리는 생성자로 응용 프로그램 설정을 주입하기위한 특별한 이름 지정 규칙을 사용 :public class Example{
public Example(AppSetting settingName){
...
}
}
AppSetting 매개 변수가 [ "settingName을"] ConfigurationManager.AppSettings를 사용하여 자동으로 주입 하였다.
는 Ninject에 이것은 사용자 지정 공급자를 사용하여 달성되었다 :
public class AppSettingProvider : Ninject.Activation.IProvider
{
public object Create(IContext context)
{
var varName = ((Context)context).Request.Target.Name;
var value = new AppSetting(ConfigurationManager.AppSettings[varName]);
if (value.Value == null)
{
... log ...
}
return value;
}
public Type Type
{
get { return typeof(AppSetting); }
}
}
내가 Autofac에서이 기능에 대한 대안을 찾을 수 없습니다. 이것이 자동화 된 방법으로 가능하지 않다면 초기 설정 단계에서 모든 앱 설정을 반복하는 것이 좋습니다.
무엇을해야할까요?
덕분에, Vilem
당신은 아마 모두 이름과 일치하는'ResolvedParameter'를 사용하고자하는 것입니다 :
다음은 결과입니다. 이름과 타입을 일치시킴으로써 한 클래스에'AppSetting myValue'가 있고 다른 클래스에'IValue myValue' (같은 이름이지만 다른 타입과의 종속성) 문제를 피할 수 있습니다. –
감사! 이것은 훌륭한 제안 일뿐만 아니라 ResolvedParameter 클래스를 지적하면 내가 원하는 것보다 훨씬 나은 해결책이 될 것입니다. 답변을 업데이트했습니다. –