Exemplo n.º 1
0
        public static CliType GetNativeCliType(Type type)
        {
            if (typeCache.ContainsKey(type))
            {
                return((CliType)typeCache [type]);
            }
            CliType cliType = new CliType(type);

            lock (typeCache) {
                typeCache [type] = cliType;
                cliType.Init();
            }
            return(cliType);
        }
Exemplo n.º 2
0
        public static void ImportType(IScriptable scope, Type type)
        {
            if (!type.IsPublic)
            {
                return;
            }

            if (ScriptRuntime.IsNativeRuntimeType(type))
            {
                return;
            }

            // Cannot define 'Object'
            if (type.Name == "Object")
            {
                return;
            }


            string [] ns = type.FullName.Split('.');

            IScriptable parent = scope;

            for (int i = 0; i < ns.Length - 1; i++)
            {
                IScriptable obj = (parent.Get(ns [i], parent) as IScriptable);
                if (obj == null)
                {
                    obj = new BuiltinObject();
                    parent.Put(ns [i], parent, obj);
                }
                parent = obj;
            }

            object thisObj = null;

            if (type.IsEnum)
            {
                thisObj = new CliEnum((Enum)Activator.CreateInstance(type));
            }
            else
            {
                thisObj = CliType.GetNativeCliType(type);
            }
            // Define as toplevel object
            scope.Put(ns [ns.Length - 1], scope, thisObj);

            // Define as full qualified name
            parent.Put(ns [ns.Length - 1], parent, thisObj);
        }
Exemplo n.º 3
0
 protected void Init(object obj, Type type)
 {
     m_Object = obj;
     m_Type = CliType.GetNativeCliType (type);
 }
Exemplo n.º 4
0
 protected void Init(object obj, Type type)
 {
     m_Object = obj;
     m_Type   = CliType.GetNativeCliType(type);
 }
Exemplo n.º 5
0
 public static CliType GetNativeCliType(Type type)
 {
     if (typeCache.ContainsKey (type)) {
         return (CliType)typeCache [type];
     }
     CliType cliType = new CliType (type);
     lock (typeCache) {
         typeCache [type] = cliType;
         cliType.Init ();
     }
     return cliType;
 }