如何在PowerShell类内部获取自身ScriptBlock,解决Use-ClassAccessors重载问题?
问题说明
几个月前我编写了一个小型的Use-ClassAccessors脚本,用于更便捷地定义类的访问器(getter和setter)。该脚本运行良好,但存在一个小限制:Use-ClassAccessors需要从包含目标类的脚本文件中调用,才能加载该类相关的AST信息。
在VSCode开发模块的过程中,访问器经常无法被重载,目前的解决方法只能是关闭终端后重新打开。
注:模块的
psd1文件也通过ScriptsToProcess调用包含类和Use-ClassAccessors函数的脚本,但修改类后显然不会重新加载。
我怀疑如果能从静态构造函数中调用Use-ClassAccessors函数,或许能解决这个问题,但我不知道如何获取类自身的AST源代码。
换个问法:有没有办法像在函数中那样,在目标类内部获取该类自身的ScriptBlock?比如下面这个函数的实现方式:
function GetMyCode { Write-Host 'My Source Code:' $MyInvocation.MyCommand.ScriptBlock }
内容的提问来源于stack exchange,提问作者iRon
相关产品推荐
相关产品推荐

