Replicating arbitrary data

I'm trying to network my character inventory system and I'm struggling to figure out how to replicate the data. Networked properties seem to be very restrictive in terms of the data types they support.

Currently, my Inventory component contains a List<IInventorySlot> where an IInventorySlot just holds a (possibly `null`) reference to an IInventoryStack and an IInvnetoryStack has a (non-`null`) reference to an IItemType and an integer count. Concrete instances of IItemType are defined by Scriptable Objects implementing IItemType.

As far as I can see so far, I'd have to replace all those interfaces and their implementations with INetworkStruct derived structs, and replace the List<> with a NetworkLinkedList<> or NetworkArray<> with a fixed capacity -- meaning the maximum size of a character's inventory would have to fixed at compile time?

Rewriting my entire inventory system using fixed-size value-typed structs seems a bit unreasonable, so I'm thinking there has to be some other way to go about this. What am I missing?