아마도이 질문에 대한 답변은 전에 .... 그러나 내 요구에 대한 구체적인 답변을 찾지 못했습니다. BTW 내가 PowerShell을 3PowerShell에서 비헤이비어 (메서드)를 사용하여 실제 개체를 만드는 방법은 무엇입니까?
음을 사용하고
, 나는 PowerShell의 새로운이야하지만 난 그렇게 객체로 작업하는 것은 나에게 매우 중요합니다, C#을 개발자로 경험을 많이 가지고있다. (즉 좋지 않을까하지만, 물론 모든 이들의)
그래서 내가 PowerShell 스크립트에서 OOP 개념을 적용 할 깨끗한 방법이 있는지 궁금하네요, 예를 들어 내가 좋아하는 것 특정 일이있다 할 것.참고 : PowerShell에서 DTO를 만들기 위해 C# 코드를 작성할 수 있으며 C#으로 PowerShell 바이너리 모듈을 만들 수 있음을 알고 있습니다. 이전에는 그랬지만 지금은 무엇을 찾고 있습니까? PowerShell에서 내 코드를 모두 쓸 수 있지만 인 개체 지향 방식입니다. ,
function New-Person
(
[Parameter()][string]$firstName
)
{
function Walk()
{
Write-Host "Walking...";
}
$person = New-Object psobject;
$person | Add-Member -MemberType NoteProperty -Name FirstName -Value $firstName;
#This line does not work
#$person | Add-Member -MemberType CodeMethod -Name Walk -Value Walk;
return $person;
}
$MyPerson = New-Person -firstName "JP";
$MyPerson;
#This line does not work
$MyPerson.Walk();
캡슐화 동작 :이 같은 것을
가 PowerShell의 객체를 생성하고뿐만 아니라 PowerShell에서 작성된 기능을 노출 : 내가 좋아하는 것
것이다 것 이는 내 개체 내부에서 함수를 만든 다음 비공개로 표시하는 것을 의미합니다.
[갖게되어 기쁘다]. 기본 동작 클래스를 상속하고 특수화하여 메서드를 재정의 할 수 있습니다.
[Nice to have]. 내가 단독으로 단위 테스트에 내 PowerShell을 방법을 생각 시작할 수 내가
을 지금까지 수행 한 내용을 (난 그냥 OOP 기능에 초점을 맞추고있어이 작업을 수행하는 훼방 같은 도구가 알고) 인터페이스를 만들기 너희들이 올바른 방향으로 방법으로 객체를 생성하는
이것은 정말 흥미 롭습니다. 지금 테스트하고 있습니다. – Jupaol
두 예제 모두 훌륭하게 작동합니다. 나는 첫번째 것을 사용하고 싶다. 'ScriptMethod' -'Value' 본문에서 매개 변수를 요청할 수있는 방법이 있습니까? '$ MyPerson.Walk ("mioles 또는 whateva"의 수)와 같은 것을 할 수있는 것; – Jupaol
함수 정의 안에 보통의'param' 블록을 추가하십시오. 예 : '$ obj = "foo"| 추가 멤버 -MemberType ScriptMethod -Value {param ($ first, $ second) "첫 번째는 $ first, 두 번째 것은 $ second"} -Name DoStuff -PassThru; $ obj.DoStuff ('abc', '123') – latkin