سؤال

لنفترض أن لديك MethodInfo المتعلقة بالطريقة myMethod:

void myMethod(int param1, int param2) { }

وتريد إنشاء سلسلة تمثل توقيع الطريقة:

string myString = "myMethod (int, int)";

من خلال التكرار عبر معلمات MethodInfo، تمكنت من تحقيق هذه النتائج عن طريق استدعاء أساليب ToString الخاصة بأنواع المعلمات:

"myMethod (System.Int32, System.Int32)"

كيف يمكنني تحسين ذلك وتحقيق النتائج الموضحة أعلاه؟

نصائح أخرى

بقدر ما أعرف، لا يوجد شيء مدمج يمكنه تحويل ملف حقيقي اكتب اسم بدائية (System.Int32) إلى الاسم المستعار المضمن (int).نظرًا لوجود عدد قليل جدًا من هذه الأسماء المستعارة، فليس من الصعب جدًا كتابة طريقتك الخاصة:

public static string GetTypeName(Type type) 
{
    if (type == typeof(int))  // Or "type == typeof(System.Int32)" -- same either way
        return "int";
    else if (type == typeof(long))
        return "long";
    ...
    else
        return type.Name;     // Or "type.FullName" -- not sure if you want the namespace
}

ومع ذلك، إذا كان المستخدم فعلا فعل اكتب في System.Int32 بدلا من int (وهذا بالطبع سيكون قانونيًا تمامًا) ستظل هذه التقنية تطبع "int".ليس هناك الكثير الذي يمكنك القيام به حيال ذلك لأن System.Type هو نفسه في كلتا الحالتين - لذلك لا توجد طريقة لمعرفة المتغير الذي كتبه المستخدم بالفعل.

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