Ninjectを使用して依存関係を注入しています。他の複数のプロパティと一緒にHasBilling、HasPaymentプロパティ - C#Ninjectパラメータベースのバインド
public interface IClass
{
}
public class Class: IClass
{
public virtual void Method(Object context)
{
--------
}
}
public class Class1: IClass
{
public override void Method(Object context)
{
--------
}
}
public class Class2: IClass
{
public override void Method(Object context)
{
--------
}
}
context
Method()
は、工場出荷時のパターンを使用して起動されます
public interface IClassFactory
{
IClass CreateClass();
}
_classFactory.CreateClass().Method(....)
ので、パラメータHasBilling
はtrue
に等しいとき、私はClass1
実装のMethod()
を呼び出す必要があり、HasPayment
がtrueに等しい場合も同様、Class2
実装のMethod()
でなければなりませんと呼ばれる。
Ninjectはバインディングを使用、私はこれらのバインディングを試してみましたが、どちらも働いた:
Bind<IClass>().To<Class1>().When(x => x.Target.Member.Name.Contains("HasBilling").Equals(true));
がこれを試みたが、運は:
Bind<IClass>().To<Class1>().WithMetadata("HasBilling", true);
いくつかのいずれかでのバインディングは必要なもので私を助けていないことができますしてくださいパラメーター値(HasBilling,HasPayment
)に基づいてClass1
,Class2
メソッド(Method
)を呼び出すように設定することができます。事前に
多くのおかげで、
おかげで、 WH