public ComMethod(ComObject o, string n)
 {
     obj = o.Obj;
     name = n;
 }
        public static ComObject ObjectToComObject(object rcw)
        {
            Debug.Assert(ComObject.IsGenericRuntimeCallableWrapper(rcw));
            ComObject res;
            if (ComObjectHash.TryGetValue(rcw, out res)) {
                Debug.Assert(rcw == res.Obj);
                return res;
            }

            lock (ComObjectHash) {
                if (ComObjectHash.TryGetValue(rcw, out res)) {
                    Debug.Assert(rcw == res.Obj);
                    return res;
                }

                res = new ComObject(rcw);
                ComObjectHash[rcw] = res;
            }
            return res;
        }