DynamicMethod.IsSecurityCritical Właściwość

Definicja

Pobiera wartość wskazującą, czy bieżąca metoda dynamiczna jest krytyczna pod względem zabezpieczeń, czy bezpieczna pod względem zabezpieczeń, i w związku z tym może wykonywać operacje krytyczne.

public:
 virtual property bool IsSecurityCritical { bool get(); };
public override bool IsSecurityCritical { get; }
member this.IsSecurityCritical : bool
Public Overrides ReadOnly Property IsSecurityCritical As Boolean

Wartość właściwości

Boolean

true jeśli bieżąca metoda dynamiczna ma krytyczne znaczenie dla zabezpieczeń lub ma krytyczne znaczenie dla bezpieczeństwa; false jeśli jest przezroczysty.

Wyjątki

Metoda dynamiczna nie ma treści metody.

Uwagi

Właściwości IsSecurityCritical, IsSecuritySafeCriticali IsSecurityTransparent raportują poziom przezroczystości metody dynamicznej określony przez środowisko uruchomieniowe języka wspólnego (CLR). W poniższej tabeli przedstawiono kombinacje tych właściwości:

Poziom zabezpieczeń IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
Krytyczne true false false
Bezpieczne krytyczne true true false
Przezroczyste false false true

Użycie tych właściwości jest znacznie prostsze niż badanie adnotacji zabezpieczeń zestawu i jego typów, sprawdzanie bieżącego poziomu zaufania i próby zduplikowania reguł środowiska uruchomieniowego.

Przejrzystość metody dynamicznej zależy od modułu, z który jest skojarzony. Jeśli metoda dynamiczna jest skojarzona z typem, a nie modułem, jego przezroczystość zależy od modułu, który zawiera typ. Metody dynamiczne nie mają adnotacji zabezpieczeń, dlatego mają przypisaną domyślną przezroczystość dla skojarzonego modułu.

  • Metody dynamiczne hostowane anonimowo są zawsze przezroczyste, ponieważ moduł dostarczany przez system, który je zawiera, jest przezroczysty.

  • Przezroczystość metody dynamicznej skojarzonej z zaufanym zestawem (czyli zestawem o silnej nazwie zainstalowanym w globalnej pamięci podręcznej zestawów) jest opisana w poniższej tabeli.

    Adnotacja zestawu Przezroczystość poziomu 1 Przezroczystość poziomu 2
    W pełni przezroczysty Przezroczyste Przezroczyste
    W pełni krytyczne Krytyczny Krytyczny
    Mieszana przezroczystość Przezroczyste Przezroczyste
    Niezależne od zabezpieczeń Sejf krytyczne Krytyczne

    Jeśli na przykład skojarzysz metodę dynamiczną z typem w mscorlib.dll, który ma poziom 2 przezroczystości mieszanej, metoda dynamiczna jest przezroczysta i nie może wykonać kodu krytycznego. Aby uzyskać informacje o poziomach przezroczystości, zobacz Kod przezroczysty dla zabezpieczeń, Poziom 1 i Kod przezroczysty dla zabezpieczeń, Poziom 2.

    Uwaga

    Skojarzenie metody dynamicznej z modułem w zestawie zaufanego poziomu 1, które jest niezależne od zabezpieczeń, takie jak System.dll, nie zezwala na podniesienie poziomu zaufania. Jeśli zestaw dotacji kodu, który wywołuje metodę dynamiczną, nie zawiera zestawu dotacji System.dll (czyli pełnego zaufania), SecurityException jest zgłaszany po wywołaniu metody dynamicznej.

  • Przejrzystość metody dynamicznej, która jest skojarzona z częściowo zaufanym zestawem, zależy od sposobu ładowania zestawu. Jeśli zestaw jest ładowany z częściowym zaufaniem (na przykład do domeny aplikacji w trybie piaskownicy), środowisko uruchomieniowe ignoruje adnotacje zabezpieczeń zestawu. Zestaw i wszystkie jego typy i elementy członkowskie, w tym metody dynamiczne, są traktowane jako przezroczyste. Środowisko uruchomieniowe zwraca uwagę na adnotacje zabezpieczeń tylko wtedy, gdy zestaw częściowo zaufania jest ładowany z pełnym zaufaniem (na przykład do domyślnej domeny aplikacji klasycznej). W takim przypadku środowisko uruchomieniowe przypisuje metodę dynamiczną domyślną przezroczystość metod zgodnie z adnotacjami zestawu.

Aby uzyskać więcej informacji na temat emisji odbicia i przejrzystości, zobacz Problemy z zabezpieczeniami w emitowaniu odbicia. Aby uzyskać informacje o przejrzystości, zobacz Zmiany zabezpieczeń.

Dotyczy

Zobacz też