سؤال

بادئ ذي بدء ، يجب أن أقول إنني سأتحدث عنه System.ComponentModel.Component.

أنت تعرف ، أنا أفهم ، أن .NET Component Model يوفر القدرة (من خلال خدمات الموقع) على تحديد منفصلة Components, ، حتى يتمكنوا من التواصل مع بعضهم البعض بطريقة مقترنة بشكل فضفاض ، وكل منها Component يمكن استبداله بسهولة.

لكن وجهة نظري هي أنه يمكنني تحقيق ذلك خلاف ذلك: أقصد إذا قمت بتصميم SW في اليمين Object Oriented Programming الطريقة ، يمكنني عن طريق Abstract classes, Interfaces الخ. تحقيق جميع الوظائف المذكورة / قابلية التشغيل البيني.

ثم لماذا و متى هل يجب أن أعتمد على نموذج المكون؟

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

المحلول

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

إذا قمت للتو بتكوين فصول وواجهات أساسية خاصة بك ، فسيتعين على أي شخص يريد أن يتفاعل مع التعليمات البرمجية استخدام فصولك. وماذا لو أرادوا الاندماج مع مكونين مختلفين للبائعين في وقت واحد؟

على وجه الخصوص ، تستخدم جميع الأشياء في WinForms System.componentModel لتنفيذ عناصر التحكم التي يمكنك وضعها في النموذج الخاص بك. كان عليهم الاختيار بعض واجهة لتمثيل ذلك ، فلماذا لا تحددها في System.componentModel؟ لماذا يبنون خاصتهم ، عندما يكون هناك بالفعل واحدة مصممة بشكل جيد متوفرة بالفعل؟

نصائح أخرى

يتيح لك تقديم وقت التصميم القدرة على الاستخدام في EG Visual Studio.

"ال System.ComponentModel تحتوي مساحات الأسماء على أنواع تنفذ وقت التشغيل ووقت التصميم للمكونات وعناصر التحكم. "يمكن أن تكون الوظيفة التي توفرها أي شيء (BackgroundWorker يفعل شيئًا مختلفًا تمامًا عن ComboBox ومع ذلك فهي كلاهما Component).

ماذا ComponentModel توفر البيانات الوصفية والمكافأة هي أنه يمكنك تصميم مكونات يمكن استخدامها في المصمم المرئي. بالتالي:

public interface IDesigner : IDisposable {

        IComponent Component {get;}        
        DesignerVerbCollection Verbs {get;}
        void DoDefaultAction();
        void Initialize(IComponent component);
}

توفر مساحة الاسم أيضًا أشياء Typedescriptor / Convertor ، قابلة للاستخدام مرة أخرى للوصول إلى وقت التصميم إلى الخصائص.

(تم اقتراح أنه يمكنك استخدام System.ComponentModel كنوع من حاوية IOC.

لذلك: فكر في استخدام System.componentModel.component عندما تريد أيضًا تقديم أ IDesigner مع المكون الخاص بك.

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