58 messaggi dal 23 agosto 2005
www.fabal.it
Buon giorno a tutti, nella mia applicazione ho esteso il mio modello creato con EF creando diversi metodi per l'interrogazione del modello al fine di non scrivere più volte le stesse linee di codice ma semplicemente richiamando un metodo dove necessito dei vari oggetti (in realtà liste dei vari oggetti)

Fra i miei metodi devo crearne uno che accetta due parametri un parametro obbligatorio di tipo intero e uno facoltativo di tipo Guid è proprio questo parametro che mi sta dando dei problemi perché non riesco ad impostare un valore null predefinito.

Sapete come posso forzare un valore null/empty per il mio metodo?

public static List<Rapportino> getRaportini(this Boolean chiuso, Guid UserId =  



Se non trovo soluzione dovrò creare un'estensione del metodo, ma questo mi obbligherà a duplicare un po' di codice :-(
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
dato che non puoi assegnare null ad un Guid perché si tratta di un value-type, puoi pur sempre ricorrere al suo valore "speciale" Guid.Empty, che può essere comunque inteso come assenza di valore.

Vedo che stai creando UserId come parametro opzionale. Sfortunatamente non puoi usare Guid.Empty lì perché i valori di default dei parametri devono essere delle costanti a compile time (e Guid.Empty non è dichiarato come const dal .NET Framework).

Questo produrrà un errore di compilazione:
public static List<Rapportino> getRapportini(this Boolean chiuso, Guid UserId = Guid.Empty)


Dunque quello che puoi fare è crearti un overload di getRapportini. In questo modo avrai una funzione che accetta solo il booleano e un'altra che vuole anche il Guid.
public static List<Rapportino> getRapportini(this Boolean chiuso){
 chiuso.getRapportini(Guid.Empty);
}
public static List<Rapportino> getRapportini(this Boolean chiuso, Guid UserId){

  if (UserId == Guid.Empty){
    //faccio qualcosa nel caso in cui lo userid non sia stato fornito
  }
}


In alternativa, potresti cambiare il tipo da Guid a Nullable<Guid> o, in maniera più concisa, porre il punto interrogativo come suffisso del tipo: Guid?
In questo modo il Guid può ricevere il valore null.
public static List<Rapportino> getRapportini(this Boolean chiuso, Guid? UserId = null)

Se un Guid è stato fornito, la proprietà UserId.HasValue sarà true e a quel punto potrai estrarre il valore con UserId.Value.

fabal ha scritto:

List<Rapportino>

Vedo che sei un sostenitore dell'ubiquitous language, bravo :)

ciao,
Moreno
Modificato da BrightSoul il 03 maggio 2014 14.26 -

Enjoy learning and just keep making
58 messaggi dal 23 agosto 2005
www.fabal.it
È il retaggio dell'esame di APS (Algoritmi e Progettazione software)
:-)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.