如何在不枚举的情况下返回IEnumerable?

时间:2017-04-14 19:40:39

标签: powershell

我浪费了一个下午的努力解决这个问题,我想出了两个测试用例,这些测试用例看似矛盾:

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进一步涵盖了这种行为。

0 个答案:

没有答案
相关问题