Pergunta

Eu estou escrevendo um personalizado cmdlet do PowerShell, e eu gostaria de saber qual é a maneira correta para validar um parâmetro.
Eu pensei que isso poderia ser feito na propriedade acessador set ou durante a execução do Cmdlet:

[Cmdlet(VerbsCommon.Add,"X")]
public class AddX : Cmdlet {

    private string _name;

    [Parameter(
        Mandatory=false,
        HelpMessage="The name of the X")]
    public string name {
        get {return _name;}
        set {
            // Should the parameter be validated in the set accessor?
            if (_name.Contains(" ")) { 
                // call ThrowTerminatingError
            }
            _name = value;
        }
    }

    protected override void ProcessRecord() {
        // or in the ProcessRecord method?
        if (_name.Contains(" ")) {
            // call ThrowTerminatingError
        }
    }
}

O que é o "padrão" abordagem?Propriedade setter, ProcessRecord, ou algo completamente diferente?

Foi útil?

Solução

Se possível, é preferível que os parâmetros que ser validada pelo tempo de execução, especificando Validação De Atributos sobre a definição do parâmetro.

O Windows PowerShell pode validar os argumentos passados para o cmdlet parâmetros de várias maneiras.O Windows PowerShell pode validar o comprimento, o intervalo e o padrão de caracteres do argumento.Ele pode validar o número de argumentos disponíveis (a contagem).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top