প্রদত্ত প্রকারটি এনাম কিনা তা পরীক্ষা করে দেখুন


117

আমি জসন.এনইটি-র জন্য একটি জসনকনভার্টার লিখছি যা আমাকে যে কোনও এনামকে একটি [বর্ণন] বৈশিষ্ট্য দ্বারা নির্ধারিত একটি স্ট্রিং ভ্যালুতে রূপান্তর করতে দেয়।

উদাহরণ স্বরূপ:

public enum MyEnum {
    [Description("Sunday")] Sunday,
    [Description("Monday")] Monday,
    [Description("Tuesday")] Tuesday,
    [Description("Wednesday")] Wednesday,
    [Description("Thursday")] Thursday,
    [Description("Friday")] Friday,
    [Description("Saturday")] Saturday
}

আমার কাছে ইতিমধ্যে সমর্থন করার কোড রয়েছে myEnum.Description()যা স্পষ্টতই এর স্ট্রিংয়ের বিবরণ ফিরিয়ে দেবে।

জসনকনভার্টার বাস্তবায়নে, এই পদ্ধতিটি রয়েছে:

    public override bool CanConvert(Type objectType)
    {

    }

আমি জিনিসটা যদি নির্ধারণ করতে কিভাবে চেষ্টা করছি objectTypeএকজন Enumএবং সত্য তাই রূপান্তরকারী জানে যে এটা এই বস্তুর রূপান্তর করতে পারেন ফিরে যান। যেহেতু আমার অনেকগুলি রয়েছে Enumতাই আমি প্রত্যেককে স্পষ্টভাবে চেক করতে পারি না তাই এটি সম্পাদন করার আরও জেনেরিক উপায়ের জন্য আমি আশাবাদী।


যখন আপনি "অবজেক্টটাইপটি একটি এনাম কিনা তা নির্ধারণ করুন" বললে আপনি মূলত অন্য কোনও এনামের পরিবর্তে অবজেক্টটাইপটি "মাইএনম" কিনা তা পরীক্ষা করতে চান। এটা কি ঠিক?
পবন মিশ্র

না আমি এটি কোনও এনুম কিনা তা যাচাই করতে চাই। @ মিনিটেকের উত্তরটি আমি যা খুঁজছি।
ব্রায়ান মিগলিওরিসি

উত্তর:


234

IsEnumসম্পত্তি ব্যবহার করুন :

if(objectType.IsEnum) {
    return true;
}

62
বা ঠিকreturn objectType.IsEnum
অ্যান্ড্রু হুইটেকার

7
@ অ্যান্ড্রুউইটেকার: আমি বুঝতে পেরেছি যেহেতু পদ্ধতিটি বলা হয় CanConvert, এটি একাধিক বিভিন্ন সম্ভাব্য রূপান্তর পরীক্ষা করবে, এটি কেবল যদি তা না হয় enum। অন্যথায় আপনি পাশাপাশি IsEnumসম্পত্তি নিজেই ব্যবহার করতে পারেন ।
রাই-

5
@ ব্রায়ান মিগলিওরিসি: আপনি খুব স্বাগতম: :) ​​সর্বদা ইন্টেলিজেন্স ব্রাউজ করার বিষয়টি নিশ্চিত করুন, আমি এ থেকে অনেক কিছু শিখেছি।
রাই-

9
পিসিএলে @ সার্জিমেটলভ আপনি অবজেক্টটাইপ.গেটটাইপআইএনফো () ব্যবহার করতে পারেন। ইসনাম
আলেকজান্ডার মুলার

কীভাবে বাউট হলে (মাইজেক্ট এনাম হয়)
নিক কোভালস্কি


1

আমি [বর্ণনার] উপর খুব বেশি মনোযোগ দিয়ে প্রশ্নটির পুরোপুরি ভুল ব্যাখ্যা করেছি, সুতরাং আপনি যদি কখনও পরীক্ষা করতে চান যে কোনও নির্দিষ্ট এনামের একটি [বিবরণ] বৈশিষ্ট্য আছে কি না (ক্ষেত্রে জেসসন কোনও কিছুই নেই তখন ফিট রাখে), এটি হ'ল এটির জন্য একটি সম্ভাব্য উপায়:

public override bool CanConvert(Type objectType)
{
    FieldInfo[] fieldInfo = objectType.GetFields(BindingFlags.Public | BindingFlags.Static);

    if( fieldInfo.Length > 0 )
    {
        return ( fieldInfo[0].GetCustomAttributes(typeof(DescriptionAttribute),false).Length > 0 );
    }
    else
    {
        return false;
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.