تحديد ما إذا كانت المعلمة تستخدم "params" باستخدام الانعكاس في C#؟

StackOverflow https://stackoverflow.com/questions/627656

  •  06-07-2019
  •  | 
  •  

سؤال

النظر في توقيع هذه الطريقة:

public static void WriteLine(string input, params object[] myObjects)
{
    // Do stuff.
}

كيف يمكنني تحديد أن "MyObjects" طريقة WriteLine تستخدم الكلمة الرئيسية لـ Params ويمكن أن تأخذ وسيطات متغيرة؟

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

المحلول

تحقق من وجود [ParamArrayAttribute] عليه.

المعلمة مع params ستكون دائما المعلمة الأخيرة.

نصائح أخرى

افحص ال المعلمة, ، إذا ParamArrayattribute تم تطبيقه على ذلك:

static bool IsParams(ParameterInfo param)
{
    return param.GetCustomAttributes(typeof (ParamArrayAttribute), false).Length > 0;
}

طريقة أقصر وأكثر قابلية للقراءة قليلاً:

static bool IsParams(ParameterInfo param)
{
    return param.IsDefined(typeof(ParamArrayAttribute), false);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top