使用Import-Module从单独的文件继承PowerShell类继承

Vid*_*ous 1 powershell inheritance class

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

foo.ps1:

class foo
{
   [STRING] $test = 'Hello World';

   [STRING] PrintTest()
   {
      return $this.test;
   }
}
Run Code Online (Sandbox Code Playgroud)

bar.ps1:

Import-Module "$PSScriptRoot\foo.ps1"

class bar : foo
{ }
Run Code Online (Sandbox Code Playgroud)

安慰

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'.
Run Code Online (Sandbox Code Playgroud)

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

Sha*_*man 5

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

bar.psm1应该包含对模块的引用,因为模块不会导入classes

bar.psm1:

Using module ".\foo.psm1"

class bar : foo
{ }
Run Code Online (Sandbox Code Playgroud)

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