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

标签 class powershell inheritance

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

foo.ps1:

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

   [STRING] PrintTest()
   {
      return $this.test;
   }
}

bar.ps1:
Import-Module "$PSScriptRoot\foo.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 应该包含对模块的引用,因为 modules do not import classes .

bar.psm1:

Using module ".\foo.psm1"

class bar : foo
{ }

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

关于class - 使用 Import-Module 从单独文件继承 PowerShell 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45848637/

相关文章:

Python 打印不使用 __repr__、__unicode__ 或 __str__ 作为 unicode 子类?

c++ - 模板和继承打破了严格的别名规则

c++ - 为什么析构函数被执行了两次?

phpunit - 测试套件的名称可以与现有类相同吗?

java - 了解嵌套循环和类

c++ - 防止编译器为 C++ 类定义复制构造函数和运算符 = 重载

powershell - 使用 PowerShell 搜索和替换

variables - PowerShell,如何增加变量名称?

powershell - 如何在不关闭输出窗口的情况下运行 PowerShell Start-Process?

javascript - "Extend"JS 数组就像传统的 OO 语言一样吗?