public class ItemCache { private static Hashtable cacheTable = new Hashtable(); public static Item GetItem( string filename ) { lock( typeof(ItemCache) ) { if( cacheTable.ContainsKey(filename.ToLower()) ) { Item target = (Item)(((WeakReference)cacheTable[filename.ToLower()]).Target); if( target != null ) { return target; } System.Diagnostics.Trace.WriteLine("すで既に破棄されていることを検出しました。再読込を行います。"); } Item item = new Item(filename); cacheTable[filename.ToLower()] = new WeakReference(item); return item; } } private ItemCache() { } }