Как то, что могло бы быть продолжением этого вопроса.
Я столкнулся с необходимостью иметь список класса List<Foo>
, где я хотел бы ограничить доступ к элементам списка, но не доступа к списку в целом, так что я могу получить / установить весь список, но не получить / установить какой-либо из его элементов.
Проблема в том, что тип элементы списка должны быть классом publi c со всеми его членами (которые являются свойствами) publi c из-за сериализации элементов списка.
Есть ли способ реализовать это?
Заранее спасибо
Изменить:
Я пробовал это:
public class SomeClass()
{
private List<string> someList;
public IList<string> SomeList {
get { return someList.AsReadOnly(); }
}
}
И проверил, может ли быть какой-либо метод, который удовлетворяет мою потребность, например get { return someList.AsWholeListGettable&SettableOnly(); }
или get { return someList.AsNoAccessibleElementsList(); }
. Я также попробовал перегрузку оператора [], чтобы попытаться сделать оператор индекса частным. (Такое же поведение для массива также будет приемлемым).
class SampleCollection<T>
{
// Declare an array to store the data elements.
private T[] arr = new T[100];
// Define the indexer to allow client code to use [] notation.
private T this[int i]
{
private get { return arr[i]; }
private set { arr[i] = value; }
}
}
как в здесь .
Так что извне члены класса не будут доступны. Но я получаю эту ошибку: