عن طريق انعكاس للحصول على اسم الأسلوب والمعلمات

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

سؤال

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

string GetName(int param1, int param2);

وانها ستعود:

string key = "GetName(1,2)";

وأنا أعلم أنك يمكن أن تحصل على MethodBase باستخدام التفكير، ولكن كيف يمكنني الحصول على قيم المعلمات في سلسلة، وليس أنواع المعلمة؟

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

المحلول

ما كنت تبحث عن اعتراضي. كما يقول باسم، وهو اعتراضية تعترض على الاحتجاج طريقة ويسمح لك لأداء الأشياء قبل وبعد استدعاء أسلوب. هذه هي شعبية جدا في العديد من الأطر التخزين المؤقت وقطع الأشجار.

نصائح أخرى

ولا يمكنك الحصول على قيم أسلوب المعلمة من التفكير. كنت قد لاستخدام API التصحيح / التنميط. يمكنك الحصول على أسماء المعلمات وأنواع، ولكن ليس المعلمات أنفسهم. عذرا ...

وهذا ما جئت مع (ومع ذلك، قد لا تكون فعالة بشكل خاص):

MethodBase method = MethodBase.GetCurrentMethod();
string key = method.Name + "(";
for (int i = 0; i < method.GetParameters().Length; i++) {
  key += method.GetParameters().GetValue(i);
  if (i < method.GetParameters().Length - 1)
    key += ",";
}
key += ")";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top