Inetworkserialize or Inetworkserializebymemcpy

using Unity.Netcode;
using Unity.Collections;
 
//Im trying to get void PickupNoDelete to work as a serverRpc
//when i made it a serverRpc i get error "dont know how to serialize"
//this script is attatched to the item in th game in this case a potion which is scriptable object
//it says I need to use Inetworkserialize or //Inetworkserializebymemcpy
//only works offline without serverrpc

public class ItemPickup : NetworkBehaviour
{
    public Item Item;
    public void PickupNoDelete()
    {
        InventoryManager.Instance.Add(Item);
    }
}
using Unity.Netcode;
using Unity.Collections;
 
public class InventoryManager : NetworkBehaviour
{
    public static InventoryManager Instance;
    public List<Item> Items = new List<Item>();
    public GameObject InventoryItem;
    public InventoryItemController[] InventoryItems;
 
    private void Awake()
    {
        Instance = this;
    }
 
    public void Add(Item item)
    {
        Items.Add(item);
    }
 
}
using Unity.Netcode;
 
public class InventoryItemController : NetworkBehaviour
{
    public Item item;
    public void AddItem(Item newItem)
    {
        item = newItem;
    }
}
using Unity.Netcode;
 
[CreateAssetMenu(fileName ="New Item",menuName ="Item/Create New Item")]
public class Item : ScriptableObject
{
    public int id;
    public string itemName;
    public int value;
    public Sprite icon;
    public ItemType itemType;
 
    public enum ItemType
    {
         potion
     }
}

Here is the same question posted on Unity Forum:
https://forum.unity.com/threads/inetworkserialize-inetworkserializebymemcpy-im-newb.1523644/