Child classes of your base item class should have all the same variables and functions as the base class does. Furthermore, you can use blueprint interfaces when you want different classes that are not inherited to have the same function definition(s). Even furthermore, you can use Event Dispatchers to broadcast an event firing to anything that has registered to listen to it.
So there are at least three ways you can approach making a large number of different BP classes know how to handle being manipulated in the inventory, without having to duplicate and vary the code across every single one of them, and without needing a bunch of Cast nodes.