2011-01-20 10 views
5

¿Podemos especificar los modificadores de acceso para los accesadores get y set de la propiedad en C# /. NET?¿Se pueden especificar modificadores de acceso separados para los accesadores get y set de una propiedad?

Si es así, ¿cuál sería el mejor enfoque para implementar esto?

+3

¿Qué documentación/recursos ya ha visto? –

+0

Sí, puede, pero no puede ir más accesible que el modificador dado a la propiedad en sí, y la propiedad debe mostrar tanto get como set. –

+1

* implementar este * Por favor, publique el resto de su tarea. –

Respuesta

11

Sí, esto es posible. Se llama Accesibilidad de acceso asimétrico y puede leer la documentación de MSDN on this page. El código sería algo como esto:

public int Age 
{ 
    get 
    { 
     return _age; 
    } 
    protected set 
    { 
     _age = value; 
    } 
} 

Sin embargo, hay un par de advertencias importantes a tener en cuenta:

  • Sólo un descriptor de acceso se puede modificar.
  • Cualquier restricción en un descriptor de acceso individual debe ser más restrictiva que el nivel de accesibilidad de la propiedad en sí, no menos.
  • No puede usar modificadores de acceso en una interfaz o una implementación explícita de un miembro de interfaz.
+0

+ otra advertencia, tanto get como set deben especificarse para declarar un modificador diferente en el get o set. –

+0

@ Adam: Bueno, eso tiene sentido ... ¿Por qué necesitarías declarar un modificador * diferente * en algo si solo tienes una de esas cosas en primer lugar? –

+0

exactamente, pero en función de los tipos de respuestas que se le dan al OP, agregué como una aclaración distinta. –

1

http://msdn.microsoft.com/en-us/library/ms173121.aspx muestra los posibles modificadores. Si usted quiere tener diversos modificadores, escriba:

[Modifier] [DataType] ProperyName{ 
    [Modifier] get{} 
    [Modifier] set{} 
} 

Sin embargo si se declara modificadores internos, deben ser menor o igual visibles que los exteriores.

3

Sí se puede ...

public class Example 
{ 
    public string Property 
    { 
     get; 
     private set; 
    } 

    public string Property2 
    { 
     get; 
     protected set; 
    } 
} 

etc

+0

-1: Solo un usuario puede tener el modificador. Además, el get o el set no pueden tener un modificador de acceso "público". – Sandeep

+0

@Sandeep - Enmendado. ahora puedes eliminar tu -1. El código anterior crea bien – WraithNath

Cuestiones relacionadas