Sending A C# List Through A RPC

I’m trying to make a LootChest And Inventory on a multilayer game but I can’t think of another way of doing it other that Lists so I need to be able to sync chests across the network.
The Chest Loot spawn script
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class LootChest : MonoBehaviour {
	
	public Transform myTransform;
	public GameObject Player;
	SphereCollider SC;
	public int MaxItems;
	int ItemCount;
	public int ChestID;
	public bool Abel = false;
	List<Item> Items = new List<Item>();
	public float RespawnItemsTimer = 0f;
	public Color HoverColour;
	Color DefaltColour;
	bool Selected = false;
	public List<Item> MyItems{
		get{
			return Items;
		}
	}
	// Use this for initialization
	[RPC]
	void Start () {
		myTransform = this.transform;
		SC = GetComponent<SphereCollider> ();
		DefaltColour = renderer.material.color;
		ItemCount = Random.Range (1,MaxItems);
		for (int i = 0; i < ItemCount; i++) {
			int r  = Random.Range(0,GameManager.Instance.AllItems.Count - 1);
			Items.Add(GameManager.Instance.AllItems[r]);
		}
	}
	void OnTriggerEnter(Collider col){
		if(col.gameObject.name == "Player(Clone)"){
			Player = col.gameObject;
			Abel = true;
		}
	}
	void OnTriggerExit(Collider col){
		if(col.gameObject.name == "Player(Clone)"){
			Player = null;
			Abel = false;
		}
	}

	// Update is called once per frame
	void Update () {
		if (Player != null){
			Abel = true;
			if(Selected){
				if(Input.GetKeyDown(KeyCode.Escape)){
					Selected = false;
					Char_Con_Temp.Instance.SelectedChest = null;
				}
			}
			if (Vector3.Distance(Player.transform.position, myTransform.position) > 1.5f){
				Char_Con_Temp.Instance.SelectedChest = null;
			}
		}

		if (Abel == false) {
			OnMouseExit ();
			Selected = false;
		} 



		if (Items.Count <= 0){
			RespawnItemsTimer += Time.deltaTime;
		}
		if (RespawnItemsTimer >= 300){
			Start();
			RespawnItemsTimer = 0;
		}
	}

	void OnMouseOver(){
		if (Abel == true) {
			renderer.material.color = HoverColour;
		}
	}
	
	void OnMouseExit(){
		renderer.material.color = DefaltColour;
	}

	void OnMouseDown(){
		if (Abel == true) {
			Selected = true;
			Char_Con_Temp.Instance.SelectedChest = this;
		}
	}
}

Maybe you could send and RPC or each item like this:

for (int i = 0; i < lootChestList.Count; i++) {
         yourIntendedTarget.networkView.RPC("AFunctionName", 
         RPCMode.All, chestList*;*

}
and then add each item to a list on each client locally:
[RPC]void AFunctionName(Item : tempItem){
myLocalList.Add(tempItem);
}
and then add or remove each item until they match the server list. Though, im not sure how you would want to work this into your own specific game.