Ninjectを使用してXmlReaderを注入しようとしています。問題は、コンストラクターではなくファクトリメソッドによって作成されることです。[Inject]
また、.NETFrameworkのコードにを追加することはできません。次に、次のバインディングを使用してXmlReaderを作成します。
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)))
しかし、このコードはひどいものです。よりきれいな方法で書き直すことはできますか?