public string Name { get; set; }
private Action _useCallback;
public virtual void Use(UseData useData)
Console.WriteLine($"{Name} has been used");
public class MeleeItem : Item
public int Durability { get; set; }
public override void Use(UseData useData)
Console.WriteLine("MeleeItem.Use called");
public Inventory(int arg) { }
public Item Item { get; }
public Inventory Inventory { get; }
public ItemStack(Inventory inventory, Item item, int arg)
public static void Main()
var inv = new Inventory(10);
var axe = new MeleeItem {Name = "Axe"};
var stack = new ItemStack(inv, axe, 1);
var useData = new UseData();