c# – 如何使用PowerShell中的行为(方法)创建真实对象?
可能这个问题在….之前已经被回答了,但是我没有找到我需要的具体答案.
BTW我正在使用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(); >封装行为,这意味着在我的对象内创建函数,然后将其标记为私有 到目前为止我所做的只是创建仅具有属性的对象(DTO),但是我想向对象添加行为 如果你们指出我正确的方向,我将不胜感激 解决方法
用方法创建对象的两个选项:
>加入会员 代码示例: $person | Add-Member -MemberType ScriptMethod -Value { 'I do stuff!' } $person = New-Module -AsCustomObject -ScriptBlock { $Property = 'value' [string]$Other = 'Can be strongly typed' function MyMethod { 'I do stuff!' } } 编辑:说私人/公开…在后一个例子属性将不会显示“默认”.您可以使用Export-ModuleMember来决定什么是public,并指定将被公开的-Variable(properties)和/或-Function(methods).没有明确的Export-ModuleMember,它将与“normal”模块中的行为相同 – 仅导出函数(方法). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |