私は依存性注入を使用するのは非常に初めてで、WPFアプリケーションのNinjectで試してみています。クラス間でパラメータをどのように渡す必要があるのか疑問に思いました。
例えば
public class ViewPersonViewModel : ViewModelBase
{
private IDataAccessService _dataService;
private IPerson _person;
private string _remarks;
// binded to textbox
public string Remarks
{
get { return _remarks; }
set {
if (_remarks != value) {
remarks = value;
OnPropertyChanged("Remarks");
}
}
}
public ViewPersonViewModel(
IDataAccessService dataService, IPerson person)
{
_dataService= dataService;
_person = person;
}
// binded to Button
public void RetrieveStatus()
{
Remarks = _dataService.RetrieveRemarks(_person);
}
}
ここでは、dataServiceは固定クラスであり、おそらく私ができることです。
class Module : Ninject.Modules.NinjectModule
{
public override void Load()
{
Bind<IDataAccessService>().To<DefaultDataAccessService>();
}
}
しかし、呼び出し元のクラスによって設定されるpersonパラメーターをどのように処理する必要があるかを知りたいと思います。
コンストラクターで追加のパラメーターを使用してNinjectを使用してインスタンスを作成することから、コンストラクターで追加のパラメーターを渡すことが可能であることがわかりました。
ただし、いくつか懸念があります。
kernel.Get<MyClass>( With.Parameters.ConstructorArgument( "parameterName", parameterValue) );
理想的な方法を使用し ていますか?parameterName
間違って入力したときなど、デバッグで多くの問題が発生しませんか?ルーベンは、プロバイダーが関与するより複雑な方法の使用についても言及しました。ここに適用できますか?もしそうなら、どうすれば使用できますか?