Scalable unique item data storage

Hello, i’m making an inventory system where i’m storing unique data per item such as durability and other variables that are specific to that item. My problem is not so much storing the data but more so getting it and transferring it.
I have a base item class and then sub classes like Weapon and Consumable. In the sub classes i have structs with the data i want to store E.g. Damage, AttackSpeed etc. in the WeaponClass and HealthRecovered in the ConsumableClass

Problem: Transferring and storing data without having to create several custom functions for each item type (weapon, consumable etc.)

A simplified setup of what i currently have. It does exactly what i want it to, but its not very scalable.