すべての開発で統一された標準を設定するために、コアライブラリを作成しました。主な機能の1つは、Autfacに基づく依存関係レジストラにAction<...>を送信することです。ninjectに移りたいです。
私は現在、バインディングキー(id)を指定し、パラメーターのコレクションをバインディングに送信することに固執しています。
Autofacコードは次のとおりです。
public void AddComponentWithParameters(Type service,
Type implementation, IDictionary<string, string> properties,
string key = "")
{
UpdateContainer(x =>
{
var serviceTypes = new List<Type> { service };
var temp = x.RegisterType(implementation)
.As(serviceTypes.ToArray())
.WithParameters(properties
.Select(y => new NamedParameter(y.Key, y.Value)));
if (!string.IsNullOrEmpty(key))
{
temp.Keyed(key, service);
}
});
}
ninjectコード:
public void AddComponentWithParameters(Type service,
Type implementation,
IDictionary<string, string> properties, string key = "")
{
UpdateContainer(x =>
{
var serviceTypes = new List<Type> { service };
var temp = x.Bind(serviceTypes.ToArray())
.To(implementation)
problem 1====>.WithParameters(properties
.Select(y => new NamedParameter(y.Key, y.Value)));
if (!string.IsNullOrEmpty(key))
{
problem 2====> temp.Keyed(key, service);
}
});
}
このアイデアは、nopCommerceDI管理に基づいています。