أكثر

هل تستخدم .NET Generics لتخزين ArcObjects؟

هل تستخدم .NET Generics لتخزين ArcObjects؟


ما هي الآثار المترتبة على استخدام الأنواع العامة في .NET لتخزين ArcObjects ، مثل ILayer و IField وما إلى ذلك؟

يرمي المترجم لي تحذيرًا عند استخدام هذا النوع من القيم

فئة عامة Foo {قائمة خاصة fooLayers. قائمة عامة FooLayers {get {…} set {…}}}

ها هو التحذير:

تحذير 15 معالجة تحذير مُصدِّر مكتبة النوع "ArcMemorialCore.Topography.IMemorialDocument.set_ProfessionalsEnvolved (القيمة) ، ArcMemorialCore". تحذير: صادف مُصدّر مكتبة النوع مثيل نوع عام في توقيع. قد لا يتم تصدير التعليمات البرمجية العامة إلى COM. ArcMemorialCore

ما يشغلني ليس فقط وجود التحذير ، ولكن أيضًا ممارسات التصميم الجيدة والأداء وما إلى ذلك.


التحذير الذي تلقيته هو بسبب وضع علامة على فصلك (أو التجمع) بعلامة:

[ComVisible (صحيح)]

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

ومع ذلك ، لا توجد مشكلة في استخدام الأدوية الجنسية مع أنواع ArcObject. ومع ذلك ، يجب أن تستخدمها فقط للأنواع الداخلية لتطبيقك - على سبيل المثال: عندما تعمل مع مجموعة من القيم.


ليس لدي مشكلة في تجميعها.

أنا أستخدم C # 3.5

باستخدام النظام ؛ باستخدام System.Collections.Generic ؛ باستخدام System.Web ؛ باستخدام ESRI.ArcGIS.Carto ؛ // ربما عدم وجود هذه الإشارة هو المشكلة؟ فئة عامة Foo {قائمة خاصة _fooLayers ؛ قائمة عامة FooLayers {get {return _fooLayers؛ } تعيين {_fooLayers = القيمة ؛ }}}