Share via


SecurityState Třída

Definice

Poskytuje základní třídu pro vyžádání stavu zabezpečení akce z objektu AppDomainManager .

public ref class SecurityState abstract
public abstract class SecurityState
[System.Security.SecurityCritical]
public abstract class SecurityState
type SecurityState = class
[<System.Security.SecurityCritical>]
type SecurityState = class
Public MustInherit Class SecurityState
Dědičnost
SecurityState
Odvozené
Atributy

Příklady

Následující příklad ukazuje, jak přepsat SecurityState třídu .

[SecurityCritical]  
public enum WebcamSecurityOptions
{
    SafeAccess,  
    FullAccess  
}  
[SecurityCritical]  
public class WebcamSecurityState : SecurityState  
{  
    public WebcamSecurityState(string description, WebcamSecurityOptions options)  
    {  
        Options = options;  
        Description = description;  
    }  
    public WebcamSecurityOptions Options { get; set; }  
    public string Description { get; set; }  
    public override void EnsureState()  
    {  
        if (!IsStateAvailable())  
            throw new ApplicationException("WebcamSecurityState not available");  
    }  
}    

Poznámky

Je nutné dědit z této třídy poskytnout třídu, která obsahuje vlastnost, která určuje akci citlivé na zabezpečení, která má být provedena. Objekt SecurityState , který je vytvořena z odvozené třídy, je předán AppDomainManager.CheckSecuritySettings metodě k určení, zda hostitel umožňuje provedení této akce. Výchozí implementace CheckSecuritySettings metody vždy vrátí false. Metoda se musí přepsat, aby se zjistily akce, které jsou povolené.

Pokud například chcete získat přístup k webové kameře v kódu knihovny, vytvoříte WebcamSecurityState objekt a zavoláte metodu EnsureState k určení, zda hostitel umožňuje přístup k webové kameře, jak je znázorněno v následujícím příkladu. (Kód pro WebcamSecurityState najdete v části "Příklad".)

var securityState = new WebcamSecurityState("Safe access to Webcam", WebcamSecurityOptions.SafeAccess);  
try  
{  
    securityState.EnsureState();  
    // Allocate memory.  
}  
catch (ApplicationException e)  
{  
    // Handle any exception that is thrown.  
    System.Diagnostics.Debug.WriteLine(e.Message);  
}  

Pro zpracování volání AppDomainManager musí být informován WebcamSecurityState prostřednictvím přepsání AppDomainManager.CheckSecuritySettings metody, jak je znázorněno v následujícím příkladu.

[SecurityCritical]  
public override bool CheckSecuritySettings(System.Security.SecurityState securityState)  
{  
    switch (securityState.ToString())  
    {  
        case "WebcamSecurityState":  
        {  
            if ((securityState as WebcamSecurityState).Options == WebcamSecurityOptions.SafeAccess)  
                return PromptUser((securityState as WebcamSecurityState).Description);  
            return false;  
        }  
    }  
    return false;  
}  
private bool PromptUser(string text)  
{  
    // Replace the OpenFileDialog with a custom user prompt.  
    OpenFileDialog o = new OpenFileDialog();  
    o.Title = text;  
    if (o.ShowDialog() == DialogResult.OK)  
        return true;  
    else  
        return false;  
}   

Konstruktory

SecurityState()

Inicializuje novou instanci SecurityState třídy .

Metody

EnsureState()

Při přepsání v odvozené třídě zajišťuje, že stav reprezentovaný parametrem SecurityState je k dispozici na hostiteli.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
IsStateAvailable()

Získá hodnotu, která označuje, zda stav pro tuto implementaci SecurityState třídy je k dispozici na aktuálním hostiteli.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro