已编辑#3。
我设法让它发挥作用。我需要在主脚本文件中以正确的顺序加载所有依赖项。不是来自类文件所以我会投票支持关闭这篇文章。
我在Windows 10上使用PowerShell 5.0。使用List(例如$list = New-Object System.Collections.Generic.List``1[CustomClass]
)适用于大多数情况。但是当我用它作为返回类型时得到了错误。
以下代码不起作用。
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
我在此回购https://github.com/michaelsync/powershell-scripts/tree/master/p5Class
中推送我的测试脚本CustomClass.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
}
}
Test.ps1
. ".\CustomClass1.ps1"
$c1 = New-Object CustomClass1
$c1.GetColumns()
如果我将所有类放在一个文件中,它就可以了。我认为它与ps1文件的加载方式有关。 (感谢@jesse提示。)
但是如果我使用普通类型,如string,int等,它可以工作。
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)
这是我们无法使用自定义类类型返回通用列表的已知问题吗?
答案 0 :(得分:1)
您的错误"无法找到类型[CustomType]"表示加载类型的顺序存在问题,或者您完全错过了加载依赖项(无论是脚本还是程序集)。
检查在使用函数之前,是否已加载所有脚本和程序集。