CA2136: Członków nie powinien mieć konflikt przezroczystość adnotacji
TypeName |
TransparencyAnnotationsShouldNotConflict |
CheckId |
CA2136 |
Kategoria |
Microsoft.Security |
Złamanie zmiany |
Złamanie |
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.
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.
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.
Nie pomija ostrzeżenia, od tej reguły.
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()
{
}
}
}