[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 自定义Validate类,继承ValidateEnumeratedArgumentsAttribute

  1. class ValidateExcludeSetAttribute: System.Management.Automation.ValidateEnumeratedArgumentsAttribute{
  2.     [bool]$IgnoreCase
  3.     [Object[]]$ValidValues
  4.     ValidateExcludeSetAttribute([object[]]$ValidValues){
  5.         $this.ValidValues = $ValidValues;
  6.     }
  7.     [void]Validate([object]$arguments, [System.Management.Automation.EngineIntrinsics]$engineIntrinsics){
  8.         foreach($arg in $arguments){
  9.             $this.ValidateElement($arg)
  10.         }
  11.     }
  12.     [void]ValidateElement([object]$element){
  13.         if($element -in $this.ValidValues){
  14.             throw [System.Management.Automation.ValidationMetadataException]::new(
  15.                 "The parameter must be in {$($($this.ValidValues) -join ' | ')}.")
  16.         }
  17.     }
  18. }
  19. function abc{
  20.     Param(
  21.         [ValidateExcludeSetAttribute('**',123,250)]
  22.         $TheValue
  23.     )
  24. }
  25. abc 5
  26. abc 123
  27. abc '**'
  28. #1.上面的代码为什么无法实现如同ValidateSet那样的参数验证???
  29. #2.对ValidateEnumeratedArgumentsAttribute的继承,怎么实现向构造函数传递值表如ValidateSet,C#中是通过params关键字实现的,PowerShell中怎么实现?
复制代码

返回列表