มันไม่มีเอกสาร แต่ดูเหมือนว่าหนึ่งในการเพิ่มประสิทธิภาพใน. NET 4.5 ดูเหมือนว่าจะใช้เพื่อทำแคชข้อมูลชนิดสะท้อนเฉพาะทำให้โค้ดตัวสะท้อนที่ตามมาบนชนิดเฟรมเวิร์กทั่วไปรันเร็วขึ้น มีความคิดเห็นเกี่ยวกับเรื่องนี้ในแหล่งอ้างอิงสำหรับคุณสมบัติ System.Reflection.Assembly.cs, RuntimeAssembly.Flags:
// 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;
}
หากไม่มีคำใบ้เพิ่มเติมว่า "API ที่มีความสุข" อาจหมายถึงอะไร แม้ว่าจะชัดเจนจากบริบทที่ว่านี้จะทำงานเฉพาะในประเภทในกรอบตัวเอง ควรมีรหัสเพิ่มเติมที่ใดที่ตรวจสอบแอตทริบิวต์ที่ใช้กับประเภทและวิธีการ ไม่มีความคิดว่าที่ตั้งอยู่ แต่เนื่องจากมันจะต้องมีมุมมองของ. NET ทุกประเภทที่จะมีการยิงแคชฉันสามารถนึกถึง Ngen.exe