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); }
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); } }