C # Jak sprawić, aby publiczne gettery i setery oraz prywatne metody kolekcji?
Chciałbym mieć klasę „A” z (na przykład) kolekcją SortedList „SrtdLst”, a wewnątrz tej klasy „A” umożliwia dodawanie lub odejmowanie elementów „SrtdLst”. Ale w przypadku klasy „A” zezwalaj tylko na pobieranie lub ustawianie zawartości elementów, a nie dodawanie nowych elementów lub odejmowanie istniejących. W kodzie:
class A
{
public SortedList<string, string> SrtdLst = new SortedList<string, string>();
public A()
{
// This must work:
SrtdLst.Add("KeyA", "ValueA");
// This too:
SrtdLst["KeyA"] = "ValueAAA";
}
}
class B
{
public A a = new A();
public B()
{
// I want the following code to fail:
a.SrtdLst.Add("KeyB", "ValueB");
// But this must work:
a.SrtdLst["KeyA"] = "ValueBBB";
}
}
UPDATE: Chcę utworzyć klasę taką jak System.Data.SqlClient.SqlCommand. W przypadku procedur przechowywanych można użyć elementu „DeriveParameters”, który wypełnia kolekcję „Parametry”, więc tylko wartość każdego elementu może być modyfikowana.
Jak można to zrobić?