Setters en un modelo depende del valor del otro modelo

c# dapper oop

Pregunta

Tengo un procedimiento almacenado que devuelve un conjunto de resultados pero tiene los campos con datos de clientes, pedidos y precios. En mi modelo, separé el cliente de objetos modelo, los pedidos y los precios, y creé un archivador de modelos para vincular todo el objeto en un modelo. Ahora, los incubadores en el modelo de fijación de precios dependen del valor devuelto del precio base del cliente. ¿Cómo puedo lograr los setters? Por cierto estoy usando dapper para mapeo de objetos

public class Customer
{
    public int ID { get; set; }
    public string Name{ get; set; }
    public int baseprice {get; set;}
}

public class Order
{
    public int ID { get; set; }
    public string Name{ get; set; }
}

public class Pricing
{
    int _price;
    public int ID { get; set; }
    public string Price
        { get { return this._price; }
          set { this._price = Customer.baseprice * 10 }
        }
}


public class CustomerModelBinder
{
    public Customer Cust{get; set}
    public Order order{get;set}
    public Pricing pricing{get; set}
}

CustomerModelBinder cust = new CustomerModelBinder();
//put value to cust here......

Respuesta aceptada

Si la clase de precios tiene clase de Cliente, será simple.

public class Customer
{
    public int ID { get; set; }
    public string Name { get; set; }
    public int BasePrice { get; set; }
}
public class Pricing
{
    public int ID { get; set; }
    public int Price => Customer.BasePrice * 10;
    public Customer Customer { get; set; }
}

Puede encontrar cómo poner resultados de consulta en dicha clase en esta publicación .


Respuesta popular

No puedes hacerlo así porque estás creando instancias. Podrías hacerlo en el constructor CustomerModelBinder . Tenga en cuenta que primero debe establecer el Customer baseprice del Customer baseprice .

public class Pricing
{
    public int ID { get; set; }
    public int Price { get; set; }
}

public class CustomerModelBinder
{
    public Customer Cust{get; set}
    public Order order{get;set}
    public Pricing pricing{get; set}
    public CustomerModelBinder(int custBasePrice)
    {
        Cust.baseprice = custBasePrice;
        pricing.Price = Cust.baseprice * 10;
    }
}

O podría hacer la multiplicación en el Pricing Price de Pricing Price

public class Pricing
{
    public int ID { get; set; }
    private int _price;
    public int Price
    {
        get => _price;
        set
        {
            _price = value * 10;
        }
     }
}

public class CustomerModelBinder
{
    public Customer Cust{get; set}
    public Order order{get;set}
    public Pricing pricing{get; set}
    public CustomerModelBinder(int custBasePrice)
    {
        Cust.baseprice = custBasePrice;
        pricing.Price = Cust.baseprice;
    }
}


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué