تحديد ما إذا كانت المعلمة تستخدم "params" باستخدام الانعكاس في C#؟
-
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);
}
لا تنتمي إلى StackOverflow