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

questionAnswers(16)

yourAnswerToTheQuestion