2012-02-29 7 views
5

में निदेशक पास निबंधक को एक तर्ककर्ता तर्क के हिस्से के रूप में निनजाइंड बाइंडिंग में एक विधि को इंगित करने की आवश्यकता है। वर्ग के लिए निर्माता इस तरह दिखता है:निनक पास के साथ कॉन्स्ट्रक्टर ऑर्ग्यूमेंट

MyObject(Func<Populator> param1, TimeSpan time) 

मैं देख किया गया है और न समारोह के लिए बाध्य करने के लिए प्रतिनिधि के लिए एक रास्ता खोजने के लिए सक्षम है। क्या यह भी संभव है? निनजेक्ट मुझे ऐसा करने नहीं देगा क्योंकि यह एक वस्तु को तर्क के रूप में उम्मीद करता है, और एक प्रतिनिधि नहीं लेगा।

Bind<IInterface>() 
     .To<MyObject>() 
     .InSingletonScope() 
     .WithConstructorArgument 
      ("param1", ctx => ctx.Kernel.Get<OtherWiredObject>().PopMethod) 
     .WithConstructorArgument 
      ("time", new TimeSpan(0,30,0)); 

क्या इस व्यवहार को निनजेक्ट में काम करने का कोई तरीका है?

+1

ओवरलोड एक कॉलबैक समारोह के लिए प्रतीत होता है कि। क्या होगा अगर आपने '() => कर्नेल प्राप्त किया। <अन्य वायर्डऑब्जेक्ट>()। पॉपएम विधि'? – dotjoe

+0

कोई पासा नहीं, इसे '() => कर्नेल.एट <अन्य वायर्डऑब्जेक्ट>()। पॉपएम विधि' इसके साथ कनेक्ट कॉन्स्ट्रक्टर आर्ग्यूमेंट विधि हस्ताक्षर को देखकर, फनक को ऑब्जेक्ट को वापस करने की उम्मीद है, और मुझे एक Func वापस करने की आवश्यकता है पैरामीटर शायद इसके चारों ओर एक और रास्ता है? –

+0

'PopMethod' प्रकार 'संपत्ति' प्रकार की संपत्ति है? – dotjoe

उत्तर

3

आप इस प्रकार का बंधन को परिभाषित कर सकते हैं:

Bind<Func<Populator>>().ToMethod(ctx => ctx.Kernel.Get<OtherWiredObject>().PopMethod); 
संबंधित मुद्दे