Ich verwende Ninject, um Abhängigkeiten zu injizieren. Ich habe die folgende Klassenstruktur:C# Ninject Parameter basierte Bindung
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
enthält - HasBilling, HasPayment Eigenschaften zusammen mit anderen mehr Eigenschaften.
Method()
mithilfe von Factorymuster aufgerufen wird:
public interface IClassFactory
{
IClass CreateClass();
}
_classFactory.CreateClass().Method(....)
Also, wenn der Parameter HasBilling
zu true
entspricht dann habe ich Method()
von Class1
Implementierung aufzurufen, in ähnlicher Weise, wenn HasPayment
auf true entspricht, Method()
von Class2
Implementierung muss sein namens.
Mit Ninject Bindung habe ich versucht, diese Bindungen, aber keiner ist:
Bind<IClass>().To<Class1>().When(x => x.Target.Member.Name.Contains("HasBilling").Equals(true));
dies versucht, aber kein Glück:
Bind<IClass>().To<Class1>().WithMetadata("HasBilling", true);
Bitte kann jemand mir helfen, mit dem, was Bindungen muss eingestellt sein, um Class1
, Class2
Methode (Method
) basierend auf einem Parameterwert (HasBilling,HasPayment
) aufzurufen.
Vielen Dank im voraus,
Danke, WH