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);
            }
        }
Exemple #3
0
 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);
     }
 }