C # ¿Cómo hacer captadores y setters públicos y métodos privados para una colección?

Me gustaría tener una clase "A" con una propiedad (por ejemplo) de la colección SortedList "SrtdLst", y dentro de esta clase "A" permite la adición o resta de elementos "SrtdLst". Pero en una instancia de la clase "A", solo permita obtener o establecer el contenido de los elementos, no agregar nuevos elementos o restar los existentes. En codigo:

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";
   }
}

ACTUALIZACIÓN: Quiero crear una clase como System.Data.SqlClient.SqlCommand. Para los Procedimientos almacenados puede usar el miembro "DeriveParameters" que llena una colección de "Parámetros", por lo que solo se puede modificar el valor de cada elemento.

¿Cómo se puede hacer esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta