编辑#3。
我设法让它工作。我需要在主脚本文件中以正确的顺序加载所有依赖项。不是来自类文件,所以我会投票关闭这篇文章。
我在 Windows 10 上使用 powershell 5.0。$list = New-Object System.Collections.Generic.List``1[CustomClass]
在大多数情况下,使用 List(例如)都有效。但是当我将它用作返回类型时出现错误。
下面的代码不起作用。
class CustomClass1 {
[System.Collections.Generic.List``1[CustomClass]]GetColumns([string]$tableType){
$list = New-Object System.Collections.Generic.List``1[CustomClass]
return $list
}
}
编辑:#1
我在下面尝试了此代码,但效果不佳。
[System.Collections.Generic.List``1[CustomClass]]GetColumns([string]$tableType) {
$list = New-Object System.Collections.Generic.List``1[CustomClass]
$c= New-Object CustomClass
$list.Add($c)
return ,$list
}
编辑:#2
我在这个 repo 中推送我的测试脚本https://github.com/michaelsync/powershell-scripts/tree/master/p5Class
自定义类.ps1
class CustomClass {
[string]$ColumnName
}
CustomClass1.ps1
. ".\CustomClass.ps1"
class CustomClass1 {
[System.Collections.Generic.List``1[CustomClass]]GetColumns(){
$list = New-Object System.Collections.Generic.List``1[CustomClass]
$c = New-Object CustomClass
$list.Add($c)
return $list
}
}
测试.ps1
. ".\CustomClass1.ps1"
$c1 = New-Object CustomClass1
$c1.GetColumns()
如果我将所有类放在一个文件中,它就可以工作。我认为这与加载 ps1 文件的方式有关。(感谢@jesse 的提示。)
但如果我使用普通类型,如字符串、整数等,它就可以工作。
class CustomClass1 {
[System.Collections.Generic.List``1[string]]GetColumns([string]$tableType){
$list = New-Object System.Collections.Generic.List``1[string]
return $list
}
}
当我为通用列表分配自定义类时,它也有效。
$list = New-Object System.Collections.Generic.List``1[CustomClass]
$c = New-Object CustomClass
$list.Add($c)
这是我们无法返回具有自定义类类型的通用列表的已知问题吗?