Bagikan melalui


IL2111: Metode dengan parameter atau nilai pengembalian dengan 'DynamicallyAccessedMembersAttribute' diakses melalui pantulan. Pemangkas tidak dapat menjamin ketersediaan persyaratan metode

Penyebab

Pemangkas tidak dapat menjamin bahwa semua persyaratan DynamicallyAccessedMembersAttribute terpenuhi jika metode diakses melalui pantulan.

Contoh

Peringatan ini dapat disebabkan oleh langsung mengakses metode dengan DynamicallyAccessedMembersAttribute pada parameter atau jenis pengembaliannya.

void MethodWithRequirements([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] Type type)
{
}

void TestMethod()
{
    // IL2111: Method 'MethodWithRequirements' with parameters or return value with `DynamicallyAccessedMembersAttribute` is accessed via reflection. Trimmer can't guarantee availability of the requirements of the method.
    typeof(Test).GetMethod("MethodWithRequirements");
}

Peringatan ini juga dapat disebabkan oleh meneruskan jenis ke bidang, paramater, argumen, atau nilai pengembalian yang dianotasi dengan DynamicallyAccessedMembersAttribute. DynamicallyAccessedMembersAttribute menyiratkan akses refleksi atas semua yang tercantum DynamicallyAccessedMemberTypes. Ini berarti bahwa ketika jenis diteruskan ke parameter, bidang, parameter generik, atau nilai pengembalian yang dianotasi dengan PublicMethods alat .NET mengasumsikan bahwa semua metode publik diakses melalui pantulan. Jika jenis yang berisi metode dengan parameter anotasi atau nilai pengembalian diteruskan ke lokasi yang dianotasi dengan PublicMethods, maka IL2111 akan dinaikkan.

class TypeWithAnnotatedMethod
{
    void MethodWithRequirements([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields)] Type type)
    {
    }
}

class OtherType
{
    void AccessMethodViaReflection([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicMethods)] Type type)
    {
    }

    void PassTypeToAnnotatedMethod()
    {
        // IL2111: Method 'MethodWithRequirements' with parameters or return value with `DynamicallyAccessedMembersAttribute` is accessed via reflection. Trimmer can't guarantee availability of the requirements of the method.
        AccessMethodViaReflection(typeof(TypeWithAnnotatedMethod));
    }
}