当前位置: 首页 > 知识库问答 >
问题:

似乎不能将泛型集合与PowerShell类一起使用

曾光誉
2023-03-14

我试图调用列表[T](IEnumerable)直接将一个项目添加到初始的列表中,如下所示,其中T是我编写的PowerShell类(下面的示例使用类名Thing:

$someObject = Get-Thing # returns a single object
$list = [List[Thing]]::new(@( $someObject ))

但是,这会产生一个错误,提示它找不到此构造函数的重载:

找不到“列表`1”和参数计数“1”的重载。

$someObject = Get-Thing
$list = [List[Object]]::new(@( $someObject ))

虽然这样做有效,但我不确定为什么我不能使用我的PowerShell类作为类型。我的理解是,只有上下文绑定类型和(默认情况下)嵌套类型不能与泛型一起使用,但以下显示我的类不是ContextBoundObject:

class Thing {
  $Name

  Thing($name) {
    $this.Name = $name
  }
}
$thing = [Thing]::new('Bender')
$thing -is [System.ContextBoundObject] # ==> False

我不确定PowerShell类是否是某种类型的嵌套类型,about_classs没有提到嵌套类型。

共有1个答案

荆乐
2023-03-14

我不确定为什么我不能使用我的PowerShell类作为类型

数组子表达式运算符@()将其结果返回为[object[]]-一个满足参数类型[IEnumerable[object]]的类型-这就是为什么当您使用[object]作为接收集合类型的类型参数时,它总是起作用的原因。

那该怎么办呢?

$list = [List[Thing]]::new([Thing[]]@( $someObject ))
 类似资料:
  • 我正在根据条件创建一个组件: 现在我想给它添加一些动画,这意味着我想融入容器中,而不是让它突然出现。我在想以下几点: 然后在我的SCSS文件中,我添加了以下内容: 现在,这个动画根本不起作用。我在单击图标时切换变量,并且我已经验证了该变量实际上正在切换!我有一种感觉,这可能与指令有关。有人能帮我吗?

  • 我试图将JMX与activeMQ一起用于监控。到目前为止,我一直将其作为参考,但到目前为止我无法远程连接到JMX,而且我在activeMQ日志中没有看到任何提到JMX url的内容。我想知道是否有其他方法来确保jmx工作正常?它应该在activemq日志中显示吗?PS我正在使用jdk1.7和activeMQ 5.14.2。 提前感谢! 编辑 我在activemq.xml文件中设置了useJmx="

  • 问题内容: 我在理解Hibernate如何处理泛型时遇到一些麻烦,并且想知道实现我的目标的最佳方法。 给定一个简单的通用实体: 在进行hibernate初始化时,出现异常: 我几乎可以肯定,这是因为我没有给hibernate一些可能的限制条件。我知道你可以指定的东西,如上面的注释,但你失去使用泛型的灵活性。我可以使用注解限制可接受的泛型的范围吗?例如:如果我想要class ,该类从抽象类继承而来,

  • 问题内容: 在解决了之前的问题的基础上,但又导致了另一个问题。如果协议/类类型存储在集合中,则取回并实例化它们会引发错误。下面是一个假设的例子。该范例基于“程序到接口而不是实现”,“程序到接口” 编辑 -我当前的解决方法是遍历集合,但是由于api必须知道各种实现,所以这当然是有限的。另一个限制是这些类型的子类(例如PersianCat,GermanShepherd)将不会调用其重写的函数,否则我将

  • 问题内容: 我有一个简单的示例,它似乎应该工作: 因此,我们有一个名为的类,它符合协议,并定义了一个可选的类方法。 但是,这一行: 导致错误: 类型名称后的预期成员名称或构造函数调用 知道我在做什么错吗? 编辑 从声明中删除单词并稍微更改函数可以使代码得以编译,但是现在我遇到了运行时错误,指出 “快速动态投放失败” 问题答案: 我无法解释为什么您的代码会导致运行时异常。但是,如果您更改函数原型,它

  • 问题内容: 更新: 感谢所有提供帮助的人-这个答案的答案在于我在更复杂的代码中没有注意到的内容以及对Java5协变量返回类型不了解的内容。 原始帖子: 今天早上我一直在玩一些东西。虽然我知道我 可以用 不同的方式解决整个问题,但我发现自己一直迷恋于弄清楚为什么它没有按我预期的那样工作。在花了一些时间阅读这些内容之后,我发现我离理解还很近,因此我将其作为一个问题来看看我是否只是愚蠢,或者是否真的有我