public static ListenerDrawer CreateListenerDrawer(object target, ListenerAttribute attr) { if (attrDrawerDic.TryGetValue(attr.GetType(), out Type drawerType)) { return((ListenerDrawer)Activator.CreateInstance(drawerType, target, attr)); } return(null); }
private Listener MetaGetListener(MethodInfo method, ListenerAttribute attribute) { var param = method.GetParameters(); if (param.Length == 1) { var type = param[0].ParameterType; if(typeof(Message).IsAssignableFrom(type)) { var m = typeof(ListenerMessageDebug<>).MakeGenericType(type); return (Listener)Activator.CreateInstance(m, type, method); //return new ListenerMessage(type, method); } throw new Exception(); } if(param.Length == 2) { if(param[0].ParameterType != typeof(IMessageSender)) { throw new Exception("Must be a message sender"); } var type = param[1].ParameterType; if (typeof(Message).IsAssignableFrom(type)) { var m = typeof(ListenerMultiDebug<>).MakeGenericType(type); return (Listener)Activator.CreateInstance(m, type, method); } throw new Exception(); } throw new Exception("Can not process listener"); }
public OnValueChangedDrawer(object target, ListenerAttribute attr) : base(target, attr) { }
public ListenerDrawer(object target, ListenerAttribute attr) : base(attr) { Target = target; }