Tengo una estructura de dinero que tiene moneda y cantidad. Me gustaría poder sumar una lista usando linq.Puede sobrecargar Suma para agregar tipos personalizados
public struct Money
{
public string Currency { get; set; }
public decimal Amount { get; set; }
public static Money operator +(Money m1, Money m2)
{
if (m1.Currency != m2.Currency)
throw new InvalidOperationException();
return new Money() { Amount = m1.Amount + m2.Amount, Currency = m1.Currency };
}
}
Teniendo en cuenta el código anterior si tengo una lista de artículos que tienen objetos de valor del dinero es posible conseguir la función Suma de trabajar con un objeto de valor del dinero.
es decir
Items.Sum(m => m.MoneyValue);
En realidad, parece que su + no estará 100% contento con la suma genérica MiscUtil, debido al uso de 'default (T)'; Me pregunto si debería cambiar 'Money' para que sea más generoso, es decir,' someValue + default (Money) => someValue' –
También - struct mutable; * awoooga *, * awoooga * ... –