Esempio n. 1
0
        public void ChangeState()
        {
            //状态机器配置文件路径
            var path = HttpContext.Current.Server.MapPath(@"..\automata.xml");
            //获取状态机参数:实体名、实体ID、动作
            var stateAction = Request.GetString("Action");
            var entityID = Request.GetInt("entityID");
            var entityType = Request.GetString("entityType");
            var assemblySpace = "Ipms.Server.Business";
            //获取实体类的所属模块
            var model = AutoMataImport.GetEntityModel(path, entityType);
            //获取实体类全名
            var className = assemblySpace + "." + model + "." + entityType;
            //获取当前动作的反馈状态
            MemberApplyState state = (MemberApplyState)Enum.Parse(typeof(MemberApplyState), AutoMataImport.GetState(path, entityType, stateAction)); ;

            //获取类实例
            var autoMataInstance = new AutoMataInstance();
            var entity = autoMataInstance.CreateInstance<object>(className);
            var temp = autoMataInstance.GetTypeMethod(className);

            List<object> parameters = new List<object>() { Database, entityID, state };
            //调用类中的方法
            temp.Invoke(entity, parameters.ToArray());
            //Message.SendMessage(model, "text", Database.Projects.GetByID((int)entityID).Manager, Database.Projects.GetByID((int)entityID).Manager, Database);
        }
Esempio n. 2
0
        public void AutoMata_Reflection()
        {
            var aa = new AutoMataInstance();
            var state = aa.GetState("P_Delete", Global.TestConfigFileName);
            //获取类型
            Assembly ass = Assembly.Load("Ipms.Server.Business");
            Type controlType = ass.GetType("Ipms.Server.Business.Projects.Project");
            var temp = controlType.GetMethod("SetState");
            //获取类实例
            var o = aa.CreateInstance<object>("Ipms.Server.Business.Projects.Project");
            List<object> sss = new List<object>() { database,1, MemberApplyState.BidResult };
            //调用类中的方法
            temp.Invoke(o, sss.ToArray());

                Assembly a = Assembly.Load("log4net");

                var b = a.GetTypes();
                foreach (Type item in b)
                {
                    Debug.WriteLine("方法:"+item.Name);
                }
        }