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

  • NikkoNantone

    NikkoNantone

    21 Kasım 2011
  • Phandroid

    Phandroid

    26 Ocak 2009
  • tseyina

    tseyina

    2 AĞUSTOS 2006