سؤال

ولقد قرأت قليلا عن وقت التصميم سمات لمكونات . هناك وجدت سمة تسمى CategoryAttribute . في هذه الصفحة تقول ان

<اقتباس فقرة>   

والطبقة CategoryAttribute تحدد فئات المشتركة التالية:

وثم يسرد عددا من الفئات المشتركة. واحد منهم على سبيل المثال المظهر . فكرت، رائعة! ثم يمكنني استخدام [Category.Appearance] بدلا من [Category("Appearance")]! ولكن على ما يبدو لم أستطع؟ حاولت الكتابة عنها، ولكن التحسس لا يستلم وانها لن ترجمة. نسيت شيئا ما هنا؟ كان عليه ربما لا هذا كانت هذه الخصائص ل؟ إن لم يكن، ما هم عنه؟ إذا كانت، كيف يمكنني استخدامها؟

ونعم، أنا لا تملك using صحيحة للوصول إلى CategoryAttribute، والسبب [Category("Whatever")] القيام بعمل. أنا فقط أتساءل كيف يمكنني استخدام هذه الفئات مشتركة محددة.

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

المحلول

وكما ترون على MSDN انها فقط خاصية جالبة، وليس اضع.

public static CategoryAttribute Appearance { get; }

في الواقع، وهنا ما يبدو رمز مثل استخدام العاكس:

 public static CategoryAttribute Appearance
    {
        get
        {
            if (appearance == null)
            {
                appearance = new CategoryAttribute("Appearance");
            }
            return appearance;
        }
    }

وهكذا فإنه لا يفعل من هيك الكثير.

واستخدام الوحيد أستطيع أن أرى لذلك، هو شيء من هذا القبيل:

            foreach (CategoryAttribute attrib in prop.GetCustomAttributes(typeof(CategoryAttribute), false))
            {
                bool result = attrib.Equals(CategoryAttribute.Appearance);
            }

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

نصائح أخرى

ويتم الوصول إلى خاصية ثابتة عبر CategoryAttribute.Appearance. ولكن النظام سمة لا يسمح لك استدعاء التعليمات البرمجية في إعلان السمة وانا اعتقد ان هذا هو السبب في أنه متعود تجميع بالنسبة لك. سوف يكون على الارجح الى تسوية ل[الفئة ( "المظهر")].

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