public static Flyweight getSignInfo(ExtrinsicState key)
        {
            Flyweight flyweight = null;

            foreach (KeyValuePair <ExtrinsicState, Flyweight> pair in pool)
            {
                if (pair.Key.hashCode() == key.hashCode() && pair.Key.equals(key))
                {
                    flyweight = pool[pair.Key];
                }
            }
            if (flyweight == null)
            {
                flyweight = new ConcreteFlyweight1(key);
                pool[key] = flyweight;
            }
            return(flyweight);
        }
        //进化版本,优化索引问题
        public static Flyweight getSignInfobyString(string key)
        {
            Flyweight flyweight = null;

            foreach (KeyValuePair <ExtrinsicState, Flyweight> pair in pool)
            {
                if (pair.Key.hashCode() == key.GetHashCode() && pair.Key.getLocation() == key)
                {
                    flyweight = pool[pair.Key];
                }
            }
            if (flyweight == null)
            {
                ExtrinsicState newState = new ExtrinsicState();
                newState.setSubject(key.Split('.')[0]);
                newState.setLocaltion(key.Split('.')[1]);
                flyweight      = new ConcreteFlyweight1(newState);
                pool[newState] = flyweight;
            }
            return(flyweight);
        }