gpt4 book ai didi

c# - C# 二进制 PowerShell 模块中的 ValidateScript ParameterAttribute

转载 作者:太空宇宙 更新时间:2023-11-03 21:24:45 25 4
gpt4 key购买 nike

我最近开始尝试使用 C# 进行二进制 PowerShell 编程,我在使用 ParameterValidationAttributes 时遇到了一些麻烦,主要是 ValidateScript 属性。基本上,我想创建一个名为“ComputerName”的参数并验证计算机当时是否在线。在 PowerShell 中很容易:

    [Parameter(ValueFromPipeLine = $true)]
[ValidateScript({ if (Test-Connection -ComputerName $_ -Quiet -Count 1) { $true } else { throw "Unable to connect to $_." }})]
[String]
$ComputerName = $env:COMPUTERNAME,

但我不知道如何在 C# 中复制它。 ValidateScript 属性采用 ScriptBlock 对象 http://msdn.microsoft.com/en-us/library/system.management.automation.scriptblock(v=vs.85).aspx我只是不确定如何在 C# 中创建它,而且我真的找不到任何示例。

[Parameter(ValueFromPipeline = true)]
[ValidateScript(//Code Here//)]
public string ComputerName { get; set; }

C# 对我来说很新,所以如果这是一个愚蠢的问题,我深表歉意。这是 ValidateScript 属性类的链接:http://msdn.microsoft.com/en-us/library/system.management.automation.validatescriptattribute(v=vs.85).aspx

最佳答案

这在 C# 中是不可能的,因为 .NET 只允许编译时常量,typeof属性参数的表达式和数组创建表达式,以及除 string 以外的引用类型唯一可用的常量是null .相反,您应该派生自 ValidateArgumentsAttribute并覆盖 Validate执行验证:

class ValidateCustomAttribute:ValidateArgumentsAttribute {
protected override void Validate(object arguments,EngineIntrinsics engineIntrinsics) {
//Custom validation code
}
}

关于c# - C# 二进制 PowerShell 模块中的 ValidateScript ParameterAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com