インタフェース抽出・・・
こんな感じ?

interface IGameData<T> {
  int Count { get; }
  T this[int no] { get; }
  void Add(T arg);
  void Remove(T arg);
}
(ジェネリックの書き方は適当ですw)

class Inventory : IGameData<Item> {
  static List<Item> itemList;//全キャラクター分のアイテムを格納
  Character character;
  public int Count { get { itemListを数えて返す } }
  (ry)
}