Вы не устанавливаете свойство Inventory
. Вы получаете это.
Ваш код может быть переписан как:
var inventory = MyData.Inventory;
inventory.AddOrUpdate(lotID, lot, (key, oldValue) => lot);
Вы можете видеть, что вы получаете MyData.Inventory
, а не установка it.
Если бы вы написали код, который сделал это:
MyData.Inventory = new ConcurrentDictionary<string, Lot>();
, то вы бы установили MyData.Inventory
, и ваш установщик был бы вызван.
Вы можете достичь того, чего хотите, если я инкапсулирую ConcurrentDictionary
в вашем классе. (Похоже, вы действительно хотите всегда устанавливать Lot
для данного lotId
, поэтому я обновил код, чтобы сделать это).
static class MyData
{
private static ConcurrentDictionary<string, Lot> _inventory = new ConcurrentDictionary<string, Lot>();
public static Update(string lotId, Lot lot)
{
// Add your interception code here
_inventory[lotId] = lot;
}
}