2012-05-29 28 views
7

Tengo un requisito en una clase personalizada en la que deseo hacer una de mis propiedades.¿Cómo hacer una propiedad requerida en C#?

¿Cómo puedo hacer que se requiera la siguiente propiedad?

public string DocumentType 
{ 
    get 
    { 
     return _documentType; 
    } 
    set 
    { 
     _documentType = value; 
    } 
} 
+0

¿Qué quiere decir con "hacer una propiedad requerida"? –

+0

"para hacer una propiedad requerida" significa que se requiere un valor en la propiedad, no se puede dejar en blanco. –

Respuesta

17

Si se refiere a "el usuario debe especificar un valor", entonces la fuerza a través del constructor:

public YourType(string documentType) { 
    DocumentType = documentType; // TODO validation; can it be null? blank? 
} 
public string DocumentType {get;private set;} 

Ahora no se puede crear una instancia sin especificar el tipo de documento, y puede no se eliminará después de ese tiempo. También podría permitir que el set pero validar:

public YourType(string documentType) { 
    DocumentType = documentType; 
} 
private string documentType; 
public string DocumentType { 
    get { return documentType; } 
    set { 
     // TODO: validate 
     documentType = value; 
    } 
} 
2

Si quiere decir que desea que siempre que se les ha dado un valor por el código de cliente, entonces su mejor apuesta es exigir como parámetro en el constructor :

class SomeClass 
{ 
    private string _documentType; 

    public string DocumentType 
    { 
     get 
     { 
      return _documentType; 
     } 
     set 
     { 
      _documentType = value; 
     } 
    } 

    public SomeClass(string documentType) 
    { 
     DocumentType = documentType; 
    } 
} 

usted puede hacer su validación - si lo necesita - ya sea en el cuerpo set de acceso de la propiedad o en el constructor.

1

Agregar atributo requerido para Propety

Required(ErrorMessage = "DocumentTypeis required.")] 
public string DocumentType 
     { 
      get 
      { 
       return _documentType; 
      } 
      set 
      { 
       _documentType = value; 
      } 
     } 

Para atributo personalizado detalle Click Here

+5

RequiredAttribute no tiene soporte de idioma; algunos marcos de interfaz de usuario pueden agregar un significado particular a dicho atributo, pero eso depende completamente de la biblioteca –

0

utilicé una otra solución, no es exactamente lo que quiere, pero me funcionó bien porque declaro el objeto primero y por motivos en una situación específica, tengo diferentes valores. No quería usar el constructor porque luego tuve que usar datos ficticios.

Mi solución fue crear conjuntos privados en la clase (obtención pública) y solo puede establecer los valores en el objeto por métodos. Por ejemplo:

public void SetObject(string mandatory, string mandatory2, string optional = "", string optional2 = "") 
Cuestiones relacionadas