Prós e contras de 'novas' propriedades em C # / .Net?
Considerando o seguinte código de exemplo:
// delivery strategies
public abstract class DeliveryStrategy { ... }
public class ParcelDelivery : DeliveryStrategy { ... }
public class ShippingContainer : DeliveryStrategy { ... }
e a seguinte classe Order de exemplo:
// order (base) class
public abstract class Order
{
private DeliveryStrategy delivery;
protected Order(DeliveryStrategy delivery)
{
this.delivery = delivery;
}
public DeliveryStrategy Delivery
{
get { return delivery; }
protected set { delivery = value; }
}
}
Quando derivar um novo tipo de classe de pedido, ele herdará a propriedade Delivery do tipo DeliveryStrateg
Agora, quando for dado que CustomerOrders devem ser entregues usando a estratégia ParcelDelivery, poderíamos considerar 'Nov 'na propriedade Delivery na classe CustomerOrder:
public class CustomerOrder : Order
{
public CustomerOrder()
: base(new ParcelDelivery())
{ }
// 'new' Delivery property
public new ParcelDelivery Delivery
{
get { return base.Delivery as ParcelDelivery; }
set { base.Delivery = value; }
}
}
(O CustomerOrder obviamente precisa garantir que seja compatível (polimorfo) com o Pedido)
Isso permite o uso direto da estratégia ParcelDelivery no CustomerOrder sem a necessidade de transmissã
Você consideraria usar esse padrão? porque porque não
Atualiza: criei esse padrão, em vez de usar genéricos, porque quero usá-lo para várias propriedades. Não quero usar argumentos de tipo genérico para todas essas propriedades