我需要在我的类函数中访问公共属性,不幸的是,在我的类之外的其他函数中。
例如
Class Myclass {
[Void]my_function(){
$file_location = "$myvar"
}
}
properties { # some props
$myvar = "somefile.txt"
}
function do_things{
echo $myvar
}
当我尝试在$myvar
中作为类的一部分访问my_function
时,我得到一个解析错误"变量未在方法中定义"这是有意义的,因为变量没有在类中声明,但我会想象属性块中的东西是可用的。
我希望有一些我不知道的东西,并且无法在文档中找到允许我这样做的东西。我无法在班级职能中使用属性,这似乎很愚蠢。
我目前的(不利的)解决方案是让我的类继承自另一个类中定义了一堆静态变量的类,因为您可以通过[MyOtherClass]::static_variable_name
访问脚本中的其他任何位置。这并不是我喜欢做的事情。
请告知
答案 0 :(得分:1)
我现在无法提供参考,但我记得在一些PowerShell博客中阅读,此功能的目的是使PowerShell类更自包含并尽早捕获错误,例如,如果拼错变量名称。
Parser只是不允许您直接在类方法体中引用随机变量,除非您在global
或script
范围前添加前缀。但是,显然,没有任何技术限制来阻止您以任何其他方式引用变量。
这样,您可以要求Get-Variable
为您读取变量值:
Get-Variable myvar -ValueOnly
你甚至可以做到这一点,因为不会分析嵌套的脚本块:
&{$myvar}