Pracuję nad niektórymi funkcjami PowerShell, aby zarządzać obiektami zaimplementowanymi w utworzonym przez nas złożeniu. Jedna z klas, z którymi pracowałem implementuje IEnumerable. Niestety, powoduje to, że PowerShell rozwija obiekt przy każdej okazji. (Nie mogę zmienić faktu, że klasa implementuje IEnumerable.)Spraw, aby PowerShell sądził, że obiekt nie jest wymienny.
Rozwiązałem problem, tworząc obiekt PSObject i kopiując właściwości naszego niestandardowego obiektu do obiektu PSObject, a następnie zwracając go zamiast niestandardowego obiektu . Ale wolałbym raczej zwrócić nasz niestandardowy obiekt.
Czy jest jakiś sposób, prawdopodobnie za pomocą mojego pliku types.ps1xml, aby ukryć metodę GetEnumerator() tej klasy z PowerShell (lub w inny sposób powiedzieć PowerShell, aby nigdy go nie rozwinąć).
Masz niestandardową kolekcję i nie chcesz, aby Power Shell traktował ją jako kolekcję? – rerun
Tak, to prawie tyle. Klasa ma rzeczy na niej inne niż kolekcja. Nie pozwól, aby to rozwinęło się w dyskusję na temat (de) zalet tego, czy klasa ta powinna być wymienna. – OldFart