كيفية تمرير الحجج منشئ في اللجنة الاولمبية الدولية في إطار

StackOverflow https://stackoverflow.com/questions/129345

سؤال

كيف يمكنني تمرير الوسائط إلى منشئ في IOC-الإطار ؟ أريد أن أفعل شيئا مثل:(تحاول أن تكون اللجنة الأولمبية الدولية في إطار الملحد ;) )

object objectToLogFor = xxx;
container.Resolve<ILogging>(objectToLogFor); 

public class MyLogging : ILogging
{
    public MyLogging(object objectToLogFor){}
}

يبدو أن هذا غير ممكن في StructureMap.ولكن أنا أحب أن أرى شخص يثبت لي خطأ.

هي أطر أخرى أكثر ميزة الغنية ؟ أو أنا باستخدام IOC-إطار في الطريق الخاطئ ؟

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

المحلول

في هيكل الخريطة يمكنك تحقيق ذلك باستخدام مع الطريقة:

string objectToLogFor = "PolicyName";
ObjectFactory.With<string>(objectToLogFor).GetInstance<ILogging>();

انظر: http://codebetter.com/blogs/jeremy.miller/archive/2008/09/25/using-structuremap-2-5-to-inject-your-entity-objects-into-services.aspx

نصائح أخرى

قلعة وندسور:

var foo = "foo";
var service = this.container.Resolve<TContract>(new { constructorArg1 = foo });

لاحظ استخدام مجهول كائن لتحديد منشئ الحجج.

باستخدام StructureMap:

var foo = "foo";
var service = container.With(foo).GetInstance<TContract>();

كيف يمكن أن تكون هذه اللغة-الملحد?هذا هو تفصيل تطبيق الإطار في السؤال.

الربيع alows لك بتحديد ج'tor وسائط قائمة القيم/المراجع ، إذا كان هذا هو الشيء الخاص بك.انها ليست للقراءة للغاية ، على الرغم من مقارنة خاصية الحقن.

بعض الناس الحصول على الساخن تحت طوق حول هذا الإصرار على أن ج'tor الحقن هو إلا مؤشر الترابط-الآمن النهج في جاوة.من الناحية الفنية أنها صحيحة ، ولكن في الواقع فإنه لا يميل إلى هذه المسألة.

فإنه لا ينبغي أن يكون شائع جدا تحتاج, ولكن في بعض الأحيان أنها صحيحة واحدة. Ninject, الذي هو أخف من StructureMap, يسمح لك لتمرير المعلمات عند استرداد عابرة الكائنات من السياق. Spring.NET أيضا.

معظم الوقت ، أعلن الكائنات في حاوية اللجنة الأولمبية الدولية ليست عابرة ، وقبول الآخرين غير عابرة الأشياء من خلال المنشئات/خصائص/الأساليب التبعيات.

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

نعم أطر أخرى هي أكثر ميزة الغنية - تحتاج إلى استخدام ioc إطار يسمح حقن منشئ.الربيع هو مثال متعدد اللغات الحاويات اللجنة الاولمبية الدولية الذي يسمح منشئ حقن التبعية.

غيرها من اللجنة الاولمبية الدولية الأطر هي أكثر ميزة الغنية.

أولا-هاء.تحقق من ParameterResolution مع Autofac

يمكنك أن تفعل ذلك أيضا مع وندسور بسهولة

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