__Dynamicallyİnvokable için özellik nedir? | Netgez.com
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

  • Christopher Bill

    Christopher

    30 NÄ°SAN 2009
  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • iNCH

    iNCH

    20 Temmuz 2009