আরকোবজেক্টস সঞ্চয় করার জন্য .NET জেনারিকস ব্যবহার করছেন?


11

ILayer, IFeld, ইত্যাদির মতো আরকোবজেক্টস সঞ্চয় করতে .NET এ জেনেরিক প্রকারের কী কী প্রভাব রয়েছে?

এই ধরণের মানগুলি ব্যবহার করার সময় সংকলকটি আমাকে একটি সতর্কতা ছুড়ে দেয়

public class Foo
{
    private List<ILayer> fooLayers;

    public List<ILayer> FooLayers
    {
        get { ... }
        set { ... }
    }
}

সতর্কতা এখানে:

সতর্কতা 15 প্রকারের লাইব্রেরি রফতানিকারী সতর্কতা 'আর্কমেমোরিয়ালকোর.টপোগ্রাফি.আইমনোরিয়াল ডকুমেন্ট.সেট_প্রফেশনালস্নভলভ (মান), আর্কমেমোরিয়াল কোর' C সতর্কতা: টাইপ লাইব্রেরি রফতানিকারীর একটি স্বাক্ষরে জেনেরিক টাইপের উদাহরণের মুখোমুখি। জেনেরিক কোড COM এ রফতানি হতে পারে না। ArcMemorialCore

আমার উদ্বেগ হ'ল সতর্কতার অস্তিত্বই নয়, তবে ভাল ডিজাইনের অনুশীলন, কর্মক্ষমতা ইত্যাদি is


কী সতর্কতা পাচ্ছেন?
রিড কোপসি

4
আপনার প্রশ্নেও কিছু প্রসঙ্গ যুক্ত করুন। আপনি কীভাবে অবজেক্টগুলি ব্যবহার করছেন সে সম্পর্কে আমাদের আরও জানতে হবে। যতদূর আমি জানি আরকোবজেক্টস ক্লাস বা ইন্টারফেসের মতো ব্যবহারের সাথে কোনও সহজাত সমস্যা নেই।
কীথ জি

সতর্কতা কী বলে?
হুগো এস্ট্রদা

আপনি কি একটি ত্রুটি বা সতর্কতা পাচ্ছেন?
জে কামিন্স

সতর্কবাণী। এটি ঠিক জরিমানা সংকলন। আমার আগ্রহগুলি সতর্কতার অস্তিত্বের বাইরে। এটি পারফরম্যান্স, ভাল ডিজাইনের অনুশীলন ইত্যাদির ক্ষেত্রে উদ্বেগের বিষয় হ'ল সতর্কতাটি হ'ল: সতর্কতা 15 প্রকারের লাইব্রেরি রফতানিকারী সতর্কতা প্রক্রিয়াকরণ 'আর্কমেমোরিয়ালকোর.টপোগ্রাফি.আইমোরিয়াল ডকুমেন্ট.সেট_প্রফেশনালস এনভলভড (মান), আর্কমেমোরিয়াল কোর'। সতর্কতা: টাইপ লাইব্রেরি রফতানিকারীর একটি স্বাক্ষরে জেনেরিক টাইপের উদাহরণের মুখোমুখি। জেনেরিক কোড COM এ রফতানি হতে পারে না।
জর্জ সিলভা

উত্তর:


10

আপনি যে সতর্কতাটি পেয়েছেন তা হ'ল আপনার ক্লাসটি (বা সমাবেশ) এর সাথে চিহ্নিত রয়েছে:

[ComVisible(true)]

আপনি যখন COM অবজেক্টগুলির সাথে সামঞ্জস্যপূর্ণ নয় এমন প্রকারগুলি ব্যবহার করেন তখন এটি সংকলক সতর্কতা জারি করে।

বলা হচ্ছে, আরকোবজেক্ট প্রকারের সাথে জেনেরিকগুলি ব্যবহার করতে কোনও সমস্যা নেই। তবে আপনার এগুলি কেবল আপনার অ্যাপ্লিকেশনের অভ্যন্তরীণ প্রকারের জন্য ব্যবহার করা উচিত - যেমন: আপনি যখন মূল্যবোধের সেট নিয়ে কাজ করছেন।


এটি যুক্ত করে আমি বিশ্বাস করি যে জেনেরিক ধরণের নাম উল্লেখ করা কেবল COM + এর পক্ষে কেবল একটি সমস্যা List<object>। সিএলআর থেকে সিওএম + এ যাওয়ার সমস্যা হওয়া উচিত নয়।
ডান্ডি

1
ক্লাসটি (বা পুরো সমাবেশটি, যা .NET 2.0+ এ অনুশীলন করার প্রস্তাব দেওয়া হয় না) [ComVisible (সত্য)] হিসাবে চিহ্নিত করার অনুমতি দেওয়ার সময় আপনি নিজের সম্পত্তিটিকে [ComVisible (মিথ্যা)] হিসাবে চিহ্নিত করে এই ধরণের সতর্কতা এড়াতে পারেন।
পেটর ক্রেবস


2

এটি সংকলন করতে আমার কোন সমস্যা নেই।

আমি সি # 3.5 ব্যবহার করছি

using System; 
using System.Collections.Generic; 
using System.Web;
using ESRI.ArcGIS.Carto;  //Perhaps not having this reference is the issue?

public class Foo
    {
        private List<ILayer> _fooLayers;

        public List<ILayer> FooLayers
        {
            get { return _fooLayers; }
            set { _fooLayers = value; }
        }
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.