Se ho un tipo personalizzato (o forse un enum) come per es. a Range
:
Public Class Range
Sub New(minimum As Single, maximum As Single)
Me.Minimum = minimum
Me.Maximum = maximum
End Sub
Public Property Minimum As Single
Public Property Maximum As Single
Public ReadOnly Property Delta As Single
Get
Return Maximum - Minimum
End Get
End Property
End Class
'-----------
'Some methods...
Questo tipo dovrebbe essere usato nel modello di dominio (implementando DDD), nella logica di business quando si fa roba e anche nel livello dati, dove verrà memorizzato come un tipo complesso.
Quindi:
- dovrei definire tali classi in un progetto
App.Common
e fare riferimento a questo assembly ovunque ( la mia scelta per ora, ma non so se avere riferimenti nel progetto del modello di dominio è un anti-pattern? ) - dovrei definirlo nel mio modello di dominio e fare riferimento al mio modello di dominio ovunque sia necessario. ( forse meglio? dato che il modello di dominio è fondamentale in DDD, ma il tipo non è un dominio o un oggetto valore ... )
- dovrei creare classi diverse per ogni livello ( che non hanno senso per me, dal momento che voglio gestirlo come un altro tipo e non come Object )?
Modifica
Nel mio caso, utilizzo range
come MeasuringRange
per i dispositivi di misura. Per es. un termometro che può misurare da 0 ° F a 250 ° F:
public class Thermometer
{
public Thermometer(Range measureRange)
{
this.MeasureRange=measureRange;
}
public Range MeasureRange {get;set;}
}
Al momento viene anche utilizzato nel DataLayer (utilizzando prima il codice EF) per memorizzare l'intervallo di dispositivi come un tipo complesso (EF crea campi MeasureRange_Max
e MeasureRange_Min
.
Viene anche utilizzato nei servizi nella BLL quando si eseguono alcune misurazioni con i dispositivi.