Board logo

标题: [问题求助] 自定义Validate类,继承ValidateEnumeratedArgumentsAttribute [打印本页]

作者: wrove    时间: 2018-4-10 18:57     标题: 自定义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中怎么实现?
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2