Nó không có giấy tờ, nhưng có vẻ như là một trong những tối ưu hóa trong .NET 4.5. Nó dường như được sử dụng để đánh dấu bộ đệm thông tin loại phản chiếu, làm cho mã phản chiếu tiếp theo trên các loại khung chung chạy nhanh hơn. Có một nhận xét về nó trong Nguồn tham chiếu cho thuộc tính System.Reflection.Ass lanh.cs, RuntimeAss lanh.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;
}
Không có gợi ý thêm về "API may mắn" có nghĩa là gì. Mặc dù rõ ràng từ bối cảnh rằng điều này sẽ chỉ hoạt động trên các loại trong chính khung. Phải có thêm mã ở đâu đó để kiểm tra thuộc tính được áp dụng cho các kiểu và phương thức. Không biết vị trí của nó nằm ở đâu, nhưng cho rằng nó sẽ cần phải có chế độ xem tất cả các loại .NET để có bộ nhớ đệm, tôi chỉ có thể nghĩ về Ngen.exe.