Class Powershell类
我在Powershell中使用闭包创建了带有静态和实例方法的类。有更好的方法吗 使用静态“方法”创建和创建对象 使用实例“方法”创建对象 我已经看到了使用这种方法的可能性:Class Powershell类,class,powershell,Class,Powershell,我在Powershell中使用闭包创建了带有静态和实例方法的类。有更好的方法吗 使用静态“方法”创建和创建对象 使用实例“方法”创建对象 我已经看到了使用这种方法的可能性: $object = New-Module -AsCustomObject -ScriptBlock {...} 但是我不认为使用这种方法创建实例方法是可能的。实例方法应该很容易使用新模块。实例字段是脚本块中的顶级变量,例如: $sb = { param($theName,$theAge,$theBreed)
$object = New-Module -AsCustomObject -ScriptBlock {...}
但是我不认为使用这种方法创建实例方法是可能的。实例方法应该很容易使用
新模块。实例字段是脚本块中的顶级变量,例如:
$sb = {
param($theName,$theAge,$theBreed)
$Name = $theName
$Age = $theAge
$Breed = $theBreed
$global:NumDogs++
function Description {
"Dog named $Name, age $Age, breed $Breed"
}
function get_NumDogs {
"Total number of dogs is $NumDogs"
}
Export-ModuleMember -Variable Name,Age,Breed -Function Description,get_NumDogs
}
$dog1 = New-Module $sb -AsCustomObject -ArgumentList 'Mr. Bill',1,'Jack Russell'
$dog1.Name
$dog1.Age
$dog1.Description()
$dog1.get_NumDogs()
$dog2 = New-Module $sb -AsCustomObject -ArgumentList Fluffy,3,Poodle
$dog2.Name
$dog2.Age
$dog2.Description()
$dog2.get_NumDogs()
您还可以将ScriptMetod成员添加到对象。相关:来自未来的读者:自Powershell 5.0起,类是该语言的一流部分。不需要更多的乱七八糟的东西。非常感谢。这就是我一直在寻找的。在尝试使用setter方法更改(例如,$Name
)之前,这似乎是有效的。我猜是因为$Name
是本地方法?如何通过方法更新“实例范围”中的变量?
$object = New-Module -AsCustomObject -ScriptBlock {...}
$sb = {
param($theName,$theAge,$theBreed)
$Name = $theName
$Age = $theAge
$Breed = $theBreed
$global:NumDogs++
function Description {
"Dog named $Name, age $Age, breed $Breed"
}
function get_NumDogs {
"Total number of dogs is $NumDogs"
}
Export-ModuleMember -Variable Name,Age,Breed -Function Description,get_NumDogs
}
$dog1 = New-Module $sb -AsCustomObject -ArgumentList 'Mr. Bill',1,'Jack Russell'
$dog1.Name
$dog1.Age
$dog1.Description()
$dog1.get_NumDogs()
$dog2 = New-Module $sb -AsCustomObject -ArgumentList Fluffy,3,Poodle
$dog2.Name
$dog2.Age
$dog2.Description()
$dog2.get_NumDogs()