/// <summary>
        /// Gets an instance of an implementation of the klass interface or subclass of klass that
        /// delegates public virtual methods to the luaTable table. Caches the generated type.
        /// </summary>
        public object GetClassInstance(Type klass, LuaTable luaTable)
        {
            LuaClassType luaClassType;

            if (!classCollection.TryGetValue(klass, out luaClassType))
            {
                luaClassType = new LuaClassType();
                GenerateClass(klass, out luaClassType.klass, out luaClassType.returnTypes, luaTable);
                classCollection[klass] = luaClassType;
            }
            return(Activator.CreateInstance(luaClassType.klass, new object[] { luaTable, luaClassType.returnTypes }));
        }
        /*
         * Gets an instance of an implementation of the klass interface or
         * subclass of klass that delegates public virtual methods to the
         * luaTable table.
         * Caches the generated type.
         */
        public object GetClassInstance(Type klass, LuaTable luaTable)
        {
            LuaClassType luaClassType;

            if (classCollection.ContainsKey(klass))
            {
                luaClassType = classCollection[klass];
            }
            else
            {
                luaClassType = new LuaClassType();
                GenerateClass(klass, out luaClassType.klass, out luaClassType.returnTypes);
                classCollection[klass] = luaClassType;
            }
            return(Activator.CreateInstance(luaClassType.klass, new object[] { luaTable, luaClassType.returnTypes }));
        }
 /*
  * Gets an instance of an implementation of the klass interface or
  * subclass of klass that delegates public virtual methods to the
  * luaTable table.
  * Caches the generated type.
  */
 public object GetClassInstance(Type klass, LuaTable luaTable)
 {
     LuaClassType luaClassType;
     if (classCollection.ContainsKey(klass))
     {
         luaClassType=classCollection[klass];
     }
     else
     {
         luaClassType=new LuaClassType();
         GenerateClass(klass,out luaClassType.klass,out luaClassType.returnTypes,luaTable);
         classCollection[klass] = luaClassType;
     }
     return Activator.CreateInstance(luaClassType.klass,new object[] {luaTable,luaClassType.returnTypes});
 }
 public object GetClassInstance(Type klass, LuaTable luaTable)
 {
     LuaClassType type;
     if (this.classCollection.ContainsKey(klass))
     {
         type = this.classCollection[klass];
     }
     else
     {
         type = new LuaClassType();
         this.GenerateClass(klass, out type.klass, out type.returnTypes);
         this.classCollection[klass] = type;
     }
     return Activator.CreateInstance(type.klass, new object[] { luaTable, type.returnTypes });
 }