我浪费了一个下午的努力解决这个问题,我想出了两个测试用例,这些测试用例看似矛盾:
curl
和
function enumerateQueueExample() {
$x = New-Object System.Messaging.MessageQueue '.\private$\myQueue';
return $x;
}
那么,假设此队列存在且为空,则调用function dontEnumerateQueueExample() {
return New-Object System.Messaging.MessageQueue '.\private$\myQueue';
}
不返回任何内容(例如enumerateQueueExample()
)返回$x = enumerateQueueExample; $x -eq $null;
。
另一方面,调用$true
返回消息队列对象,这是我真正想要的(例如dontEnumerateQueueExample()
)返回$x = enumerateQueueExample; $x -eq $null;
,并且$false
中有一个有效的消息队列最后。
您无法嵌套此行为,因此以下函数也将导致枚举队列:
$x
所以我的问题是如何解决这种行为(我们可以将其称为功能,或者根据您的使用方式设计缺陷)以便我的功能(function nestedCall() {
return (dontEnumerateQueueExample);
}
或nestedCall()
)实际上返回一个messageQueue而不是枚举它?
This question进一步涵盖了这种行为。