找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 15013|回复: 0

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

[复制链接]
发表于 2018-4-10 18:57:41 | 显示全部楼层 |阅读模式
  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中怎么实现?
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 00:29 , Processed in 0.016894 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表