2011-09-29 6 views
7

के साथ विधि के लिए ToMethod के माध्यम से बाध्यकारी इंटरफ़ेस मुझे लगता है कि मैं जो खोज रहा हूं वह कुछ आसान है, फिर भी मैं कोई उदाहरण नहीं ढूंढ पा रहा हूं।पैरामीटर

StandardKernel.Get<ISomeInteface>(new Ninject.Parameters.Parameter("dataContext", dataContext, true)); 
: एक वस्तु यहाँ

अनुरोध: मैं एक पैरामीटर निर्दिष्ट और न कि वास्तविक अनुरोध के दौरान इंजेक्शन के साथ एक कारखाना विधि कॉल Ninject होने से Ninject उपयोग करने के लिए एक वस्तु बनाने के लिए वस्तु का दृष्टांत करना चाहते हैं

और मैं ISomeInterface को उस विधि पर मैप करना चाहता हूं जो रनटाइम पर एक मान को पारित करने की अपेक्षा कर रहा है।

यहाँ एक इंटरफेस का मिलान:

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

यह संभव है? यदि हां, तो मैं अपने इंटरफेस को सही तरीके से कैसे मैप करूं? धन्यवाद!

उत्तर

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

लेकिन आप अपने डिजाइन पर पुनर्विचार कहीं भी अपने समग्र जड़ की तुलना में और से Get बुला से बचने के लिए करना चाहिए।

+0

उत्तर के लिए धन्यवाद! दुर्भाग्य से, कोड संकलित नहीं करता है। और हां, मैं कारखाने की विधि को संयुक्त जड़ों से कॉल करने की योजना बना रहा हूं .. उन लोगों के लिए विरासत पदानुक्रम है (क्योंकि उनमें से बहुत सारे हैं) और मेरे पास उनके लिए एक ही कारखाना है – Igorek

+0

संकलक के पास समस्याएं हैं पैरामीटर ऑब्जेक्ट और मेरी IDataContext ऑब्जेक्ट के बीच कनवर्ट करना जो() फ़ंक्शन बनाता है – Igorek

+0

सूखी मैं जोड़ना भूल गया। GetValue() अद्यतन उत्तर –