Ich arbeite gerade an einer Anwendung in C#. Stellen Sie sich eine Ladenfront mit einer Kasse vor. Ich habe eine Wörterbuchstruktur mit einem Objekt als Schlüssel, und einen int Objektzähler als Wert.C# Dictionary Summe der Gruppenwerte berechnen
die Struktur sieht wie folgt aus:
Dictionary<myObject, int> items.
Die Grundidee ist, ein Wörterbuch der Gegenstände in eine Methode zu übergeben. Ich füge nur einzigartige myObjects dem Wörterbuch hinzu. Das myObject hat eine Gegenregel beigefügt. Sobald die Zählerregel voll ist, möchte ich eine Berechnung mit allen myObects im Wörterbuch durchführen.
Die myObject sieht wie folgt aus:
public class myObject
{
string ItemId { get; set; }
Discount Discount { get; set; }
}
public class Discount
{
public int Count { get; set; }
public decimal Price { get; set; }
public IDiscountHandler DiscountHandler => new DiscountHandler();
}
Eine Probe myObject könnte wie folgt aussehen:
var myObectA = new myObject()
{
ItemId = "A"
};
var discountA = new Discount()
{
Count = 2,
Price = 12 // special price, if 2 myObjects were added to the Dictionary
};
myObjectA.Discount = discountA;
1) ich die Einzelteile Wörterbuch ausfüllen und an die Handler-Methode übergeben:
private decimal _totalDiscountedValue { get; set; } = 0;
if (!_items.ContainsKey(myObject))
{
_items.Add(myObject, 1);
}
else
{
_items[myObject]++;
}
_totalDiscountedValue += _discountHandler.CalculateDiscount(_items);
2) In meinem Handler versuche ich alle Rabattwerte zusammenzufassen, sobald eine Zählerregel voll ist. Aber hier bin ich kämpfen leider:
public class DiscountHandler : DiscountHandler
{
private decimal _totalDiscount { get; set; } = 0;
public override decimal CalculateDiscount(IDictionary<myObject, int> items)
{
if (items == null) throw new ArgumentNullException(nameof(items));
// I'm struggeling here:
// check if Dictionary[i].Dicount.Count = Dictionary.Value
// then _totalDiscount += Dictionary[i].Discount.Price
return _totalDiscount;
}
}
Sie wissen, wie dieses Problem zu lösen, oder haben Sie eine Idee, wie man dies möglicherweise zu lösen?
Vielen Dank !!
_totalDiscountedValue = _totalDiscountedValue + _discountHandler.CalculateDiscount (_items); –