Mam strukturę pieniężną z walutą i kwotą. Chciałbym móc podsumować listę za pomocą linq.Czy można przeciążać Sum, aby dodać typy niestandardowe?
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 };
}
}
Biorąc pod uwagę powyższy kod, jeśli mam listę elementów, które mają obiekty wartości pieniądza jest to możliwe, aby uzyskać funkcji Sum do pracy z obiektem wartości pieniądza.
tj
Items.Sum(m => m.MoneyValue);
Właściwie wygląda na to, że Twój + nie będzie w 100% zadowolony z sumy ogólnej MiscUtil, z powodu użycia 'default (T)'; Zastanawiam się, czy powinieneś zmienić 'Money' na bardziej hojny - tzn.' SomeValue + default (Money) => someValue' –
Również - mutable struct; * awoooga *, * awoooga * ... –