等效于 Powershell [ValidateSet]

Nai*_*gel 5 c# powershell

在 Powershell 中,当我定义一个函数时,我可以使用 轻松指定参数的可能值列表[ValidateSet],例如

function Log {
    param (
        [ValidateSet("File", "Database")] 
        [string]$Type = "File"
    )
    # my code
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我定义了一个默认值file和一组可能的值filedatabase. C# 中是否有类似的方法,还是应该“手动”在构造函数中执行检查?

public Log(string type = "file") {
    public Log() {
        if ... # here goes my check on the string
    }
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*idG 2

如果您只有有限范围的值,那么您可以使用枚举来代替。首先设置您的枚举:

public enum MyValues
{
    File,
    Database
}
Run Code Online (Sandbox Code Playgroud)

然后像使用任何其他参数类型一样使用它:

public void Log(MyValues type = MyValues.File)
{
    switch (type)
    {
        case MyValues.File:
            //Do file stuff here
            break;
        case MyValues.Database:
            //Do database stuff here
            break;
        default:
            throw new ArgumentException("You passed in a dodgy value!");
    }
}
Run Code Online (Sandbox Code Playgroud)