Предположим, у меня есть список:
$DeletedUsers = New-Object System.Collections.Generic.List[System.object]
Так что я могу легко добавлять и удалять пользователей из коллекции.
Я хочу передать этот список функции, которая выполняетчто-то, но без изменения исходного списка, и он должен остаться того же общего типа списка.
convertAll()
, кажется, делает именно то, что я хочу, без необходимости самостоятельно создавать сценарий создания нового списка с помощью foreach-object
, но я не понимаю, как использовать определения перегрузки (или совершенно не понимаю, что они означают).
Есть много примеров в C #, но я не смог найти тот, который демонстрирует этов PoSH.
Пример сценария:
Предположим, что $ DeletedUsers содержит список объектов User типа PSCustomObject.С типичными свойствами пользователя, такими как отдел или статус занятости.Этот список должен передаваться функциям, которые будут изменять статусы свойства users, которые затем могут быть добавлены в отдельный выходной список того же типа Generic.List.
В настоящее время любые изменения в примере функции.
Function ProcessUser {
[Cmdletbinding()]
Param($DeletedUsers)
begin{$DeletedUsersClone = $($DeletedUsers).psobject.copy()} #OR similar
process{
$DeletedUsersClone | foreach { $_ | Add-Member -NotePropertyName
"Processed" -NotePropertyValue "Processed:00"; $Outputlist.add($_)}
}
}
Влияет на исходный $ DeletedUsers, ошибочно добавляя обработанную информацию в список, который должен оставаться статичным.
Существуют альтернативные способы предотвращения влияния этого на конечную цель сценария,но вопрос в следующем:
Как создать True, не имеющий ссылки клон System.Collections.Generic.List [System.object], используя встроенные методы C #.