public void Initialization(IInitializedObject initializedObject) { Type type = initializedObject.GetType(); foreach (PropertyInfo property in type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Where(p => p.IsDefined(typeof(InjectAttribute), true))) { foreach (InjectAttribute attribute in (InjectAttribute[])property.GetCustomAttributes(typeof(InjectAttribute), true)) { if (Basic.CheckConditions(attribute.UseCondition)) { if (string.IsNullOrEmpty(attribute.ParametersGetMode)) { property.SetValue(initializedObject, property.GetPropertyInstence()); } else { property.SetValue(initializedObject, property.GetPropertyInstence(attribute.ParametersGetMode)); } break; } } } foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Where(p => p.IsDefined(typeof(InjectAttribute), true))) { List <object> parametersList = new List <object>(); ParameterInfo[] parameters = method.GetParameters(); string ParametersGetMode = (method.GetCustomAttribute(typeof(InjectAttribute)) as InjectAttribute).ParametersGetMode; if (string.IsNullOrEmpty(ParametersGetMode)) { string[] ParametersGetModes = ParametersGetMode.Split(','); for (int i = 0; i < parameters.Length; i++) { parametersList.Add(parameters[i].GetParameterInstence(ParametersGetModes[i])); } } else { for (int i = 0; i < parameters.Length; i++) { parametersList.Add(parameters[i].GetParameterInstence()); } } method.Invoke(initializedObject, parametersList.ToArray()); } }
public void Initialization(IInitializedObject initializedObject) { Type type = initializedObject.GetType(); string propertyName = "Handlers"; Dictionary <string, EventHandler> tmpHandlers = new Dictionary <string, EventHandler>(); foreach (MethodInfo method in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).Where(p => p.IsDefined(typeof(HandlerEventBindingAttribute), true))) { HandlerEventBindingAttribute attribute = Attribute.GetCustomAttribute(method, typeof(HandlerEventBindingAttribute)) as HandlerEventBindingAttribute; string key = attribute.EventToken; if (!string.IsNullOrEmpty(attribute.TargetProperty)) { propertyName = attribute.TargetProperty; } tmpHandlers.Add(key, (EventHandler)Delegate.CreateDelegate(typeof(EventHandler), initializedObject, method)); } PropertyInfo property = type.GetProperty(propertyName); if (property != null) { property.SetValue(initializedObject, tmpHandlers); } }
public static void PerformInitialization(this IInitializedObject initialized) { GetInitializer(AppConst.Init_Inject).Initialization(initialized); foreach (InitializationAttribute attribute in Attribute.GetCustomAttributes(initialized.GetType(), typeof(InitializationAttribute)).Where(p => (p as InitializationAttribute).InitializeTime == AppConst.InitMode_Before)) { GetInitializer(attribute.InitializeType).Initialization(initialized); } initialized.Initialization(); foreach (InitializationAttribute attribute in Attribute.GetCustomAttributes(initialized.GetType(), typeof(InitializationAttribute)).Where(p => (p as InitializationAttribute).InitializeTime == AppConst.InitMode_After)) { GetInitializer(attribute.InitializeType).Initialization(initialized); } }