لماذا هناك واجهة / فئة (IFoo, FooClass) نمط في مكتب Interop API ؟
-
06-07-2019 - |
سؤال
في Microsoft.مكتب.إمكانية التشغيل المتداخل.Visio مكتبة كل كيان (ل هـ.ز الشكل) ، وصفها بأنها فئة (ShapeClass) واجهة والشكل.
لذلك لكل عنصر لديك:
interface Shape { ... }
class ShapeClass : Shape { ... }
interface Page { ... }
class PageClass : Page { ... }
...
لماذا هو تصميم مثل هذا ؟
المحلول
وو"إمكانية التشغيل المتداخل" جزء من مساحة يلمح أن هذا هو في الواقع API المستندة إلى COM.
وCOM كان محاولة مايكروسوفت للمرة الاولى في نموذج عنصر محايد لغة للمطورين، وكان واحدا من المبادئ الأساسية التصميم القائم على واجهة.
وهكذا، في المثال الخاص بك، ويسمى ShapeClass
على "شارك في الفئة"، والذي هو تطبيق اسمه واجهة Shape
.
وسجلت الطبقات شركة على مستوى العالم (في التسجيل Win32 و) ويمكن إنشاؤها على أساس أسمائهم ودية ( "بروغ-ID") أو GUID، ودعا "CLSID".
نصائح أخرى
واعتقد انه سيكون لأنها تنفذ جميع ككائنات COM واجهة هناك لتعريف العقد لتنفيذ الطبقة - سيتم تنفيذ الواجهات في المختبر الدولي للألماس
ولأن هذه هي الطريقة التي يعمل COM.
وCOM يحدد الواجهات التي مكونات تنفذ. جميلة ويستند الكثير من كل شيء في COM على الواجهات. واجهات أكثر أهمية من الفئات التي تنفيذها.
هذا يعتمد على طريقة COM يعمل.
إذا كنت تبحث عن أمثلة جيدة .صافي تصميم, هل لا ابحث في مكتب interop المكتبات (PIAs).هم المباشر مغلفة حول COM يعادل وهي معتدلة فظيعة في C#.
إلى جعل المكتب المكتبات أسهل للعمل مع ، في محاولة VSTO أدوات السلطة