Probably this question has been answered before.... but I have not found a specific answer to my needs.
BTW I'm using PowerShell 3
Well, I'm new in PowerShell but I have a lot of experience as a C# developer, so working with objects is very important to me.
So I'm wondering if there's a clean way to apply OOP concepts (well not all of them, though that would be awesome) in a PowerShell script, for example there are specific things that I would like to do.
Note: I'm aware that I can write C# code in PowerShell to create DTO's and also that I can create PowerShell binary modules in C#, I have done that in the past, but what I'm looking for now is the ability to write all my code in PowerShell but in an Object Oriented way.
Things I would like to do:
Create an object in PowerShell, and expose a function written in PowerShell as well, something like this:
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();Encapsulate behavior, which means create functions inside my object and then mark them as private
[Nice to have]. Create base classes so I can inherit and specialize my behavior overriding methods
[Nice to have]. Create interfaces so I can start thinking in unit testing in isolation my PowerShell methods (I know there are tools like Pester to do this I'm just focusing on OOP features)
What I have done so far is creating objects w