internal void AddHandler(Type t) { if (_handlers.ContainsKey(t)) { return; } var handler = ImportTypeHandler.Create(t); _handlers.Add(t, handler); }
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); }