2015-01-12 2 views
1

최근에 C#의 Binary PowerShell Programming을 실험하기 시작했으며 대부분 ValidateScript 특성 인 ParameterValidationAttributes에 문제가 있습니다. 기본적으로 "ComputerName"이라는 Param을 만들고 그 당시 컴퓨터가 온라인 상태인지 확인하려고합니다. PowerShell에서 쉬웠습니다.C# 이진 PowerShell 모듈의 ValidateScript ParameterAttribute

[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 속성 클래스입니다 : .NET은 속성 매개 변수와 시간 상수, typeof 표현과 배열 생성 식을 컴파일 할 수 있기 때문에 그것은, C#에서 수 없습니다 http://msdn.microsoft.com/en-us/library/system.management.automation.validatescriptattribute(v=vs.85).aspx

답변

3

string은 다른 참조 유형에 해당하는 경우에만 일정 null. C#을 내 개념에서,이 어쩌면 조금 정보에 대한

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

감사 대신 당신은 ValidateArgumentsAttribute에서 파생 및 유효성 검사를 수행 할 수 Validate를 오버라이드 (override) 할 필요가 있습니다. 그럼, 그 클래스를 만들면 ValidateScript()에서 호출 할 수 있습니까? [ValidateScript ({ValidateCustomAttribute.Validate (arg0, arg1)})] – dotps1

+0

@ dotps1 'ValidateScriptAttribute' 대신 사용자 지정 특성을 적용합니다. – PetSerAl

+0

고맙습니다. 컴퓨터에 접속할 수 없다면 예외를 던질 수 있습니다. – dotps1