public static void Main()
var itemInstance1 = new Item_Armour{UniqueFloat = "test1"};
var itemInstance2 = new Item_Armour{UniqueFloat = "test2"};
itemInstance2.OnItemEquipped(itemInstance2);
public abstract class Item<T> where T : IItem
public virtual void OnItemEquipped(T item)
public class Item_Armour :Item<Item_Armour>,IItem
public string UniqueFloat{get;set;}
public override void OnItemEquipped(Item_Armour item)
UseUniqueFloat(item.UniqueFloat);
public void UseUniqueFloat(string uniqueFloat)
Console.WriteLine(uniqueFloat);