Saltar al contenido

¿Cómo hacer que una propiedad esté protegida E interna en C#?

No busques más por todo internet porque has llegado al lugar adecuado, tenemos la solución que necesitas recibir sin complicaciones.

Solución:

No es posible en C#.

Solo en aras de la exhaustividad, esto es compatible con IL (modificador de acceso de familia y ensamblado).

¿Qué hay de malo en hacer público el getter? Si declara la propiedad como

public string[] Headers  get; protected set; 

cumple con todos los criterios que desea: todos los miembros del ensamblaje pueden obtener la propiedad y solo las clases derivadas pueden establecerla. Claro, las clases fuera del ensamblaje también pueden obtener la propiedad. ¿Asi que?

Si realmente necesita exponer la propiedad dentro de su ensamblaje pero no públicamente, otra forma de hacerlo es crear una propiedad diferente:

protected string[] Headers  get; set; 
internal string[] I_Headers  get  return Headers;  

Claro, es feo decorar el nombre con eso. I_ prefix. Pero es una especie de diseño extraño. Hacer algún tipo de cambio de nombre en la propiedad interna es una forma de recordarse a sí mismo (oa otros desarrolladores) que la propiedad que están usando no es ortodoxa. Además, si luego decide que mezclar accesibilidad como esta no es realmente la solución adecuada para su problema, sabrá qué propiedades corregir.

Mantendría el modificador de acceso como protegido y tendría un método auxiliar interno.

protected override string[] Headers 
    get  return headers;  // Note that get is protected
    set  headers = value; 


internal SetHeadersInternal(string[] newHeaders)

    headers = newHeaders;

Pero de alguna manera, esto huele a que debería refactorizarse de alguna manera. Interno siempre es algo que usaría con moderación porque puede conducir a una arquitectura muy desordenada donde todo usa de alguna manera todo lo demás dentro del ensamblaje, pero por supuesto siempre hay excepciones.

Si te sientes estimulado, puedes dejar una noticia acerca de qué te ha parecido este tutorial.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *