سؤال

وأنا أحاول التفاف رأسي حول أفضل طريقة لاستخدام اللجنة الاولمبية الدولية في طلبي لحقن التبعية، ولكن لدي مشكلة صغيرة.

وأنا باستخدام تنفيذ فضفاض من نمط MVP مع التطبيق WPF. في الأساس، يتم إنشاء مثيل فئة مقدم، ورؤية ومهمة يتم حقن (مثل IEmployeeView وIEmployeeTask لEmployeePresenter) في مقدم.

وأود أن استخدام وعاء اللجنة الاولمبية الدولية (أنا أحاول من الوحدة، على الرغم من أنني أعتقد أن هذا سيحدث أيضا مع الآخرين مثل ninject أو خريطة الهيكل) بدلا من الحقن يدويا هذه الحالات، ولكن إذا تم إنشاء مقدم (أو حل من وعاء اللجنة الاولمبية الدولية) على دعوة مندوب المتزامن، أو موضوع الحدث (على سبيل المثال لا الخيوط STA) ثم إنشاء مثيل جديد من نافذة WPF يطرح الاستثناء التالي:

<اقتباس فقرة>   

وهذه العملية بناء الحالية (بناء رئيسي   بناء مفتاح [<م> مساحة الاسم .Window1، لاغية])   فشل: يجب أن يكون موضوع الدعوة   STA، لأن العديد من مكونات واجهة المستخدم   تتطلب ذلك.

والآن، وأنا أعلم هذا الإطار الحالات الجديدة وما إلى ذلك يجب أن تكون STA، ولكن هل من الممكن استخدام الحاويات اللجنة الاولمبية الدولية للقيام حقن التبعية حتى عندما يكون UI يجب إنشاء على مؤشر ترابط STA؟

ومن النظر في هذه المشكلة يبدو أن الطبقة / نوع يتم حلها يتم إنشاء مثيل في الوقت العزم، وليس عندما سجلت لها ...

هل كانت مفيدة؟

المحلول

وأود أن أقول لاستخدام المصنع لإنشاء كائنات مقدم. بهذه الطريقة، يمكنك إنشاء مثيلات عامة من المحاضرين من داخل PresenterFactory الخاصة بك في موضوع STA، ثم ببساطة تمر بها عند الحاجة.

نصائح أخرى

ومشكلتك لها علاقة مع اللجنة الاولمبية الدولية لا شيء، كائن WPF يمكن الوصول إليها إلا من نفس الخيط الذي خلقها - لذلك لديك لإنشاء مقدم بك على نفس الموضوع مثل باقي واجهة المستخدم الرسومية الخاصة بك (وليس فقط أي STA موضوع).

استخدم Dispatcher.BeginInvoke لتشغيل التعليمات البرمجية في موضوع الرئيسي، وندعو اللجنة الاولمبية الدولية contianer من هناك.

ولقد ذكرتم الوحدة، هل نظرت باستخدام مكتبة التطبيق المركب الذي يستخدم أيضا؟ يستخدم التطبيق عينة StockTrader الوحدة لحقن جهات النظر إلى نماذج العرض .. إذا كنت لا تريد استخدام فعليا CAL - مزيد من المعلومات: ( http://msdn.microsoft.com/en-us/library/cc707890 .aspx اتصال أو http://www.codeplex.com/CompositeWPF )

قد يكون لا يزال قادرا على العمل بها كيف وصلوا حول هذه القضية ..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top