Ejemplo n.º 1
0
        internal void AddHandler(Type t)
        {
            if (_handlers.ContainsKey(t))
            {
                return;
            }
            var handler = ImportTypeHandler.Create(t);

            _handlers.Add(t, handler);
        }
Ejemplo n.º 2
0
        public static ImportTypeHandler Create(Type t)
        {
            var obj = new ImportTypeHandler();

            obj._type = t;
            if (t.IsInterface || t.ContainsGenericParameters)
            {
                return(obj);
            }

            foreach (var field in t.GetFields(BindingFlags.Instance | BindingFlags.Public))
            {
                obj._fields[field.Name] = field;
            }
            foreach (var field in t.GetFields(BindingFlags.Static | BindingFlags.Public))
            {
                obj._static_fields[field.Name] = field;
            }
            foreach (var property in t.GetProperties(BindingFlags.Instance | BindingFlags.Public))
            {
                obj._propertys[property.Name] = property;
            }
            foreach (var property in t.GetProperties(BindingFlags.Static | BindingFlags.Public))
            {
                obj._static_propertys[property.Name] = property;
            }
            foreach (var method in t.GetMethods(BindingFlags.Instance | BindingFlags.Public))
            {
                obj._methods[method.Name]       = ReflectionHelper.GenerateCFunctionFromMethodInfo(method);
                obj._debug_methods[method.Name] = method;
            }
            foreach (var method in t.GetMethods(BindingFlags.Static | BindingFlags.Public))
            {
                obj._static_methods[method.Name]       = ReflectionHelper.GenerateCFunctionFromMethodInfo(method);
                obj._debug_static_methods[method.Name] = method;
            }
            // new
            obj._new_func = ReflectionHelper.GenerateCFunctionForNew(t);
            return(obj);
        }