2011-09-29 15 views
7

parametresine sahip bir yönteme bağlanma, aradığım şeyin çok basit bir şey olduğunu düşünüyorum, ancak hiçbir örnek bulamıyorum.ToMethod aracılığıyla bir arabirime

StandardKernel.Get<ISomeInteface>(new Ninject.Parameters.Parameter("dataContext", dataContext, true)); 
: Burada bir nesne için

İsteği: Ben nesne örneğini oluşturmak için gerçek isteği sırasında belirtilen ve enjekte bir parametreye sahip bir fabrika yöntemini çağırın Ninject alarak bir nesne oluşturmak için Ninject kullanmak istiyorum

ISomeInterface'i çalışma zamanında iletilecek bir değer bekleyen bir yöntemle eşlemek istiyorum.

burada bir arabirim eşleme:

Kernel.Bind<ISomeInterface>().ToMethod(SomeObject.Create(--> `what do I put here?`)); 

bu mümkün mü? Öyleyse, arayüzümü düzgün şekilde nasıl eşlerim? Teşekkürler!

cevap

6
ToMethod(ctx => 
    SomeObject.Create(
     (IDataContext)ctx.Parameters.Single(p =>p.Name == "dataContext") 
     .GetValue(ctx, null)) 

Ama başka bir yerde senin kompozit kökünden daha gelen Get arayarak önlemek için tasarım yeniden düşünmek gerekir.

+0

Cevabınız için teşekkürler! Maalesef, kod derlenmiyor. Ve evet, fabrika yöntemini kompozit köklerden aramayı planlıyorum. Bunlar için bir kalıtım hiyerarşisi var (bunlardan birçoğu var) ve onlar için tek bir fabrikam var. Hepsi için – Igorek

+0

derleyicinin sorunları var. Parametre nesnesi ile Create() işlevinin benim IDataContext nesnesi arasında dönüştürme işlemi – Igorek

+0

alır Sry I eklemeyi unutmuşum .GetValue() updated answer –

İlgili konular