الحصول على أنواع في Mscorlib 2.0.5.0 (المعروف أيضا باسم Silverlight Mscorlib) عبر التفكير؟

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

سؤال

أحاول إضافة دعم Silverlight إلى البرمجة المفضلة Langauge Nemerle.

nemerle، في إجراءات التجميع، يتم تحميل جميع الأنواع عن طريق التفكير أساسا في خطوتين

1-) يستخدم الجمعية. تحميل من أجل تحميل التجميع 2- Associations usees.gettypes () للحصول على الأنواع

ثم في نهاية المجموعات التي تنبعث منها أنواع حل مع انعكاس.

يعمل هذا الإجراء لجميع الجمعيات بما في ذلك Silverlight Orchen باستثناء Mscorlib of Silverlight.

في C # هذا فشل:

 var a = System.Reflection.Assembly.LoadFrom(@"c:\mscorlib.dll");

ولكن هذا يمر:

var a = System.Reflection.Assembly.ReflectionOnlyLoadFrom(@"c:\mscorlib.dll"); 

BU في الأخير، A.Gettypes () يلقي استثناء Sayin System.Object الأصل غير موجود.

هل هناك طريقة للخروج ؟

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

المحلول

على افتراض أنك تحاول التفكير في Mscorlib Silverlight من CLR القياسية، فلن يعمل هذا لأن CLR لا يسمح بتحميل إصدارات متعددة من MSCORLIB. (ربما هذا لأنه يمكن أن يزعج حل أنواعها الأساسية).

الحل البديل هو استخدام mono.cecil لتفقد الأنواع:http://mono-project.com/cecil.. وبعد تؤدي هذه المكتبة بالفعل بشكل أفضل من انعكاس .NET ومن المفترض أن تكون أكثر قوة.

إليك بعض الكود لتبدأ:

AssemblyDefinition asm = AssemblyFactory.GetAssembly(@"C:\mscorlib.dll");

var types =
    from ModuleDefinition m in asm.Modules
    from TypeDefinition t in m.Types
    select t.Name;

نصائح أخرى

يمكنك تجميع Nemerle مع جمعية Silverlight ثم لديك Nemerle تعمل على قمة Silverlight :)

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