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

Chcete-li poskytnout třídu, která obsahuje vlastnost, která určuje akci citlivou na zabezpečení, která se má provést, musíte zdědit z této třídy. Objekt SecurityState , který je vytvořena z odvozené třídy, je předán AppDomainManager.CheckSecuritySettings metodě k určení, zda hostitel umožňuje provést danou akci. Výchozí implementace CheckSecuritySettings metody vždy vrátí false. Metoda musí být přepsána, aby se zjistily povolené akce.

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 , abyste zjistili, jestli hostitel povoluje přístup webové kamery, 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);  
}  

Aby bylo možné volání AppDomainManager zpracovat, musí být informováno 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, který je reprezentován 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í funkce hash.

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

Type Získá aktuální instanci.

(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ří použádnou kopii aktuálního souboru Object.

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

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

(Zděděno od Object)

Platí pro