IReadOnlyList <T>и установщик - PullRequest
2 голосов
/ 05 мая 2020

Что означает, когда свойство атрибута имеет значение IReadOnlyList, но у него есть установщик? Меня смущает то, что если список доступен только для чтения, то зачем нам сеттер?

public IReadOnlyList<string> FilteredProductId { get; set; }

1 Ответ

2 голосов
/ 05 мая 2020

Вы правы, что странно, что они защищали содержимое из FilteredProductId, но не сам экземпляр. Я ожидал хотя бы частного сеттера. Это своего рода настройка, которая предназначена для предотвращения того, чтобы человек , использующий этот код, делал то, что ему не положено.

Что это означает? Что ж, FilteredProductId защищен не полностью. Однако, возможно, не обязательно иметь полную защиту (экземпляр и содержимое). Просто отсутствие функции Add() - серьезная защита от случайного изменения. Никто не может случайно добавить что-либо в список.

А создать новую коллекцию «Только для чтения» и добавить ее туда? Это тоже учитывается. Не то же самое, что делает большинство людей в результате аварии . Так что защиты может хватить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...