public abstract class UnitaDiMisura {
protected UnitaDiMisura(){ }
public abstract string Sigla { get; }
public double Value { get; set; }
public class Wattaggio : UnitaDiMisura {
public Wattaggio(double val) : this() {
private const string _sigla = "W";
public override string Sigla { get{ return _sigla; } }
public Lampadina(Wattaggio w){
public Wattaggio Watt {get; private set;}
public class LampadinaDto<T> where T : UnitaDiMisura{
public LampadinaDto(double val) {
this.UnitaDiMisura = default(T);
this.UnitaDiMisura.Value = val;
public T UnitaDiMisura { get; private set;}