SORU
23 EYLÜL 2012, Pazar


__Dynamicallyİnvokable için özellik nedir?

DotPeek I System.Linq.Enumerable bakarak bazı yöntemler [__DynamicallyInvokable] bir öznitelik ile ilişkili olduğuna dikkat edin.

Bu öznitelik rol oynuyor? Bir şey DotPeek tarafından eklenen veya başka bir rolü oynamak, belki de yöntemleri optimize etmek için nasıl derleyici bilgilendirme mu?

CEVAP
23 EYLÜL 2012, Pazar


Belgesiz, ama iyileştirmeler gibi görünüyor .NET 4.5. Yansıma türü info önbellek başbakan için kullanılacak ortak çerçeve türleri sonraki yansıma kod daha hızlı çalışmasını sağlamak gibi görünüyor. Sistem için Referans Kaynağı bu konuda bir yorum var.Yansıma.Derleme.cs, RuntimeAssembly.Flags özelliği:

 // Each blessed API will be annotated with a "__DynamicallyInvokableAttribute".
 // This "__DynamicallyInvokableAttribute" is a type defined in its own assembly.
 // So the ctor is always a MethodDef and the type a TypeDef.
 // We cache this ctor MethodDef token for faster custom attribute lookup.
 // If this attribute type doesn't exist in the assembly, it means the assembly
 // doesn't contain any blessed APIs.
 Type invocableAttribute = GetType("__DynamicallyInvokableAttribute", false);
 if (invocableAttribute != null)
 {
     Contract.Assert(((MetadataToken)invocableAttribute.MetadataToken).IsTypeDef);

     ConstructorInfo ctor = invocableAttribute.GetConstructor(Type.EmptyTypes);
     Contract.Assert(ctor != null);

     int token = ctor.MetadataToken;
     Contract.Assert(((MetadataToken)token).IsMethodDef);

     flags |= (ASSEMBLY_FLAGS)token & ASSEMBLY_FLAGS.ASSEMBLY_FLAGS_TOKEN_MASK;
 }

Daha fazla "API" olabilir. ne mübarek bir ipucu olmadan Bu çerçeve kendi içinde türleri üzerinde çalışacak bağlamında açık. Özniteliği denetler ek kod bir yere türleri ve yöntemleri uygulanmış olmalı. Hiçbir fikrim bulunduğu, ama bir görüşe ihtiyacı olacağını göz önüne alındığında .Önbelleğe alma şansım var NET türleri, sadece ngen.exe düşünemiyorum.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • How Things Are Made

    How Things A

    17 HAZİRAN 2008
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008
  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012