可能这个问题之前已经回答过......但我还没有找到满足我需求的具体答案。
顺便说一句,我正在使用 PowerShell 3
好吧,我是 PowerShell 的新手,但我作为 C# 开发人员拥有丰富的经验,因此使用对象对我来说非常重要。
所以我想知道是否有一种干净的方法可以在 PowerShell 脚本中应用OOP 概念(不是所有的概念,尽管那会很棒),例如我想做一些特定的事情。
注意:我知道我可以在 PowerShell 中编写 C# 代码来创建 DTO,并且我可以在 C# 中创建 PowerShell 二进制模块,我过去做过,但我现在正在寻找的是编写的能力我在 PowerShell 中的所有代码,但以面向对象的方式。
我想做的事情:
在 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 方法的单元测试(我知道有像 Pester 这样的工具可以做到这一点,我只专注于 OOP 功能)
到目前为止我所做的是创建仅具有属性的对象(DTO),但我想为我的对象添加行为
如果你们指出我正确的方向,我将不胜感激