El principio “Open/Closed” o “Abierto/Cerrado” hace referencia a que todas nuestras entidades de software, deben estar abiertas a la extensión pero cerradas para modificación. Por entidades nos referimos a clases, módulos, funciones, etc. A continuación abordaremos un poco más sobre el tema.
En palabras más claras lo que queremos decir es que; debería ser posible editar el comportamiento de un método sin alterar su código base. Conforme va aumentando la complejidad de nuestro sistema podrás darte cuenta que no siempre es sano “meterle mano” a nuestros métodos conforme van surgiendo nuevos requerimientos, de ahí este principio.
Deberíamos considerar usar la abstracción de manera balanceada ya que podemos estar añadiendo complejidad completamente innecesaria en nuestro desarrollo, podemos tratar de predecir en dónde podríamos necesitar estas abstracciones en el futuro y aplicarlas.
También, cada que utilizas “new” estás ligando tu código a una implementación. Verifica bien este tipo de instrucciones. Esta bien empezar concreto sin mucha abstracción, sin embargo conforme van aumentando los requerimientos y surge la necesidad de estar realizando cambios; puedes ir modificando estas implementaciones.
Considera implementar nuevas funcionalidades en nuevas clases, y tenlo aún más en cuenta cuándo trabajas con código legacy, no te gustaría romper algo de lo cual no tienes mucha idea al respecto.

Pero, como puedo extender mi código?
Puedes implementar parámetros en tus métodos o funciones las cuales van a definir el comportamiento de estos. También puedes utilizar la herencia de manera que modifiques el comportamiento del tipo que está heredando en lugar del base, o puedes utilizar también los extension methods disponibles en C#.
Aplicar este principio nos trae buenas ventajas. Reducimos la probabilidad de añadir nuevos bugs en el código que ya tenemos ya que claramente no lo estás modificando cada que añaden un nuevo requerimiento, así mismo otros elementos que dependen de este código reducen su probabilidad de romperse debido a cambios en esta dependencia y nos permite llegar a un entendimiento de nuestro software con mayor facilidad.