1
我嘗試使用Ninject來注入XmlReader。問題在於它是由構造函數的工廠方法創建的。而且我無法將一個[Inject]
添加到.NET Framework中的代碼中。現在我用下面結合創建的XmlReader:在Ninject中使用工廠方法,我不能將屬性添加到
Bind<IXmlReader>()
.ToMethod(
x =>
XmlReader.Create(
(string) GetParameter(x, "inputUri"),
(XmlReaderSettings) GetParameter(x, "settings")))
.Named("definition");
private object GetParameter(IContext context, string name)
{
var parameters = (List<IParameter>) context.Parameters;
return (from p in parameters
where p.Name == name
select p.GetValue(context))
.FirstOrDefault();
}
我用它如下:
var reader = _kernel.Get<IXmlReader>("definition",
new Parameter("inputUri", FilePath, false),
new Parameter("settings", settings, false)))
但這種代碼是可怕的。我能否以更聰明的方式改寫它?
另請參閱http://stackoverflow.com/questions/10141661/ninject-cascading-constructor-arguments/10142063#10142063 – 2012-04-15 07:57:25