سؤال

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

AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].ToString()

أعلم أن هذا يجب أن يكون السمة التي قمت بتعيين وظيفتي إليها، لأنه عندما أزاله من DLL، سيتخرج السطر الثاني من التعليمات البرمجية إلى NULL. ما أود القيام به هو أن تكون قادرا على الحصول على اسم السمة. حاليا السطر الثاني من التعليمات البرمجية سيعود فقط "mono.cecil.customattribute". أعتقد أنه يجب أن يكون هناك طريقة للحصول على اسم اسم السمة (نوع الفصل)، أليس كذلك؟

شكرا!

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

المحلول

واجهت مشكلة في هذا عند الكتابة موما كذلك. هنا هو رمز يستخدم:

AssemblyDefinition assembly = AssemblyFactory.GetAssembly(pathBin);
assembly.MainModule.Types[0].Methods[1].CustomAttributes[0].Constructor.DeclaringType.ToString()

نصائح أخرى

أ CustomAttribute هو مثال على System.Attribute نوع مشتق، لذلك ToString() سوف تفعل كل ما قرر المؤلف.

إذا كنت ترغب في معرفة أنواع السمة، يجب عليك طلب نوعها:

typeInfo.GetCustomAttributes(false)[0].GetType().ToString() ;

أنا لم أر هذه الخاصية CustomAttributes أنت تستخدم، لذلك أنا استخدمت الطريقة MemberInfo.GetCustomAttributes(bool) التي أستخدمها دائما.

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