2

我需要在我的类函数中访问公共属性,不幸的是,在我的类之外的其他函数中。

例如

Class Myclass {
    [Void]my_function(){
        $file_location = "$myvar"
    }
}

properties { # some props
    $myvar = "somefile.txt"
}

function do_things{
    echo $myvar
}

当我尝试作为类的一部分进行访问时$myvarmy_function我得到一个解析错误“变量未在方法中定义”,这是有道理的,因为变量没有在类中声明,但我想在属性块中的东西会可以使用。

我希望有一些我不知道并且无法在允许我这样做的文档中找到的东西。我不能在我的类函数中使用属性似乎很愚蠢。

我当前(不利)的解决方案是让我的类从另一个类继承,该类中只定义了一堆静态变量,因为您可以通过在脚本中的其他任何地方访问这些变量[MyOtherClass]::static_variable_name。这不是我喜欢的方式。

请指教

4

1 回答 1

2

我现在无法提供参考,但我记得在一些 PowerShell 博客中看到,此功能的目的是使 PowerShell 类更加自包含并及早发现错误,例如,如果你拼错了变量名。

解析器只是不允许您直接在类方法主体中引用随机变量,除非您在其前面加上globalorscript范围。但是,显然,没有进行任何技术限制来阻止您以任何其他方式引用变量。

因此,您可以要求Get-Variable为您读取变量值:

Get-Variable myvar -ValueOnly

你甚至可以这样做,因为嵌套的脚本块不会被分析:

&{$myvar}
于 2016-04-15T18:26:22.410 回答