PowerShell 类从使用导入模块的单独文件继承



我在这里做错了什么 - 还是PowerShell v5不支持单独的类文件和继承?

foo.ps1:

class foo
{
[STRING] $test = 'Hello World';
[STRING] PrintTest()
{
return $this.test;
}
}

条形图.ps1:

Import-Module "$PSScriptRootfoo.ps1"
class bar : foo
{ }

安慰

PS C:Script> Import-Module ./bar.ps1;
PS C:Script> $myBar = New-Object bar;
PS C:Script> $myBar.PrintTest();
Method invocation failed because [bar] does not contain a method named 'PrintTest'.

如果它将 foo 和 bar 类放在同一个文件中,它可以正常工作。但是,我正在构建的类相当大,我想将它们分开。

首先,模块文件应该具有扩展名.psm1因此您需要更改它。如果不以这种方式命名它们,我在下面引用的Using语句将显示错误。

bar.psm1 应包含对模块的引用,因为模块不导入类。

bar.psm1:

Using module ".foo.psm1"
class bar : foo
{ }

但是,一旦你这样做了,bar 类就不会导出,所以你必须编写一个单独的 ps1 文件,该文件在顶部Using module ".bar.psm1"说明,然后在该脚本文件中你可以调用 [bar] 类。

最新更新