سؤال

من ما قرأت عن وندسور/النوية أنه من الممكن نظريا أن تفعل كل ما يمكنك القيام به باستخدام ملفات xml مع رمز.كما واقع الأمر - و يرجى تصحيح لي إذا كنت مخطئا - يبدو أن المساهمة الرئيسية وندسور طبقة لإضافة تكوين xml عن الأشياء النوية يمكن القيام به بالفعل.

ومع ذلك, لقد كنت تناضل في الآونة الأخيرة مع معرفة كيفية تنفيذ بعض قليلا أكثر تعقيدا وظائف في مدونة على الرغم من (ie. كيفية تعيين منشئ افتراضي حجة القيمة).الآن بينما أنا ذاهب إلى استخدام xml في إنتاج الإصدار أنا تسجيل المكونات في قانون بلدي التجارب و هذا يشكل إشكالية تماما.هذا لا يساعد المؤسفة الدولة من الوثائق حقيقة أن فقط المواد يمكنني العثور على التركيز على xml التسجيل.

لا أحد يعرف مصدر الذي يسرد كيفية التسجيل الأشياء في رمز (ويفضل مع xml ما يعادلها) ؟ تعرية وجود من أن لا أحد ببساطة تعلم مفتوح المصدر/نموذج مشروع حيث هناك قدر كبير من عدم استخدام xml من قلعة وندسور/النوية?

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

المحلول

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

[Test]
    public void ParentResolverIntercetorShouldNotAffectGenericComponentInterceptor()
    {
        WindsorContainer container = new WindsorContainer();
        container.AddComponent<MyInterceptor>();

        container.Register(
            Component.For<ISpecification>()
                .ImplementedBy<MySpecification>()
                .Interceptors(new InterceptorReference(typeof(MyInterceptor)))
                .Anywhere
            );
        container.AddComponent("repos", typeof(IRepository<>), typeof(TransientRepository<>));

        ISpecification specification = container.Resolve<ISpecification>();
        bool isProxy = specification.Repository.GetType().FullName.Contains("Proxy");
        Assert.IsFalse(isProxy);
    }

و أكثر ، تحقق من ComponentRegistrationTestCase و AllTypesTestCase

وهناك أيضا DSL لفعل ذلك, هذا هو بلدي المفضل الخيار لأنه حقا يبسط الأمور و يقدم الكثير من سهلة التمدد.DSL يسمى Binsor الذي يمكنك قراءة المزيد عنها هنا: http://www.ayende.com/Blog/archive/7268.aspx ولكن مرة أخرى, أفضل مكان تقنية المعلومات وحدة الاختبارات.هذا هو رمز المثال ما ممكن مع binsor:

for type in AllTypesBased of IController("Company.Web.Controller"):
    component type

هذين الخطين سوف تسجل أي نوع أن يرث IController واجهة في وعاء :D

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