Udostępnij za pośrednictwem


CA2136: Elementy członkowskie nie powinny mieć skonfliktowanych adnotacji przezroczystości

TypeName

TransparencyAnnotationsShouldNotConflict

CheckId

CA2136

Kategoria

Microsoft.Security

Złamanie zmiany

Złamanie

Przyczyna

Ta reguła pożary, gdy członek typu jest oznaczona z System.Security atrybut zabezpieczeń, który ma inny przejrzystości niż atrybut zabezpieczeń kontenera członka.

Opis reguły

Atrybuty przezroczystości są stosowane od elementów kodu większy zakres elementów mniejszy zakres.Atrybuty przejrzystości elementów kodu z większy zakres mają pierwszeństwo przed przejrzystości atrybutów elementów kodu, które są zawarte w pierwszym elementem.Na przykład klasa, która jest oznaczona z SecurityCriticalAttribute atrybutu nie może zawierać metodę, która jest oznaczona z SecuritySafeCriticalAttribute atrybut.

Jak naprawić naruszenia

Aby naprawić tego naruszenia, usunąć atrybut zabezpieczeń elementu kod, który ma zakres niższy lub zmienić jego atrybut, być taka sama, jak element zawierający kod.

Kiedy do pomijania ostrzeżenia

Nie pomija ostrzeżenia, od tej reguły.

Przykład

W poniższym przykładzie metoda jest oznaczona z SecuritySafeCriticalAttribute atrybutu i jest członkiem klasy, oznaczone SecurityCriticalAttribute atrybut.Bezpieczny atrybut zabezpieczeń, powinny zostać usunięte.

using System;
using System.Security;

namespace TransparencyWarningsDemo
{

    [SecurityCritical]
    public class CriticalClass
    {
        // CA2136 violation - this method is not really safe critical, since the larger scoped type annotation 
        // has precidence over the smaller scoped method annotation.  This can be fixed by removing the 
        // SecuritySafeCritical attribute on this method
        [SecuritySafeCritical]
        public void SafeCriticalMethod()
        {
        }
    }
}