internal static bool TryGetConstructor(RuntimeType t, RuntimeType[] ctorParams, out RuntimeConstructorInfo ctorInfo) {
            Contract.Assert(t != null, "[GetConstructor]t!=null");
            Contract.Assert(t is RuntimeType, "[GetConstructor]t is RuntimeType"); 

            ctorInfo = t.RemotingCache[CacheObjType.ConstructorInfo] as RuntimeConstructorInfo; 
            if (ctorInfo != null) { 
                return true;
            } 

            ctorInfo = t.GetConstructor(
                    BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic,
                    null, CallingConventions.Any, ctorParams, null) as RuntimeConstructorInfo; 
            if (ctorInfo != null) {
                t.RemotingCache[CacheObjType.ConstructorInfo] = ctorInfo; 
                return true; 
            }
 
            return false;
        }