Commit 06ad9957 authored by 潘栩锋's avatar 潘栩锋 🚴

优化 Reflect_SeviceClient 的 event 有默认 触发函数名称 Trigger_XXXXX

parent d5138f41
...@@ -7,16 +7,17 @@ using System.Threading.Tasks; ...@@ -7,16 +7,17 @@ using System.Threading.Tasks;
namespace FObjBase.Reflect namespace FObjBase.Reflect
{ {
/// <summary> /// <summary>
/// 注册 event 返回类型 /// 注册 event 返回类型;
/// 客户端,默认使用 Trigger_xxxx(xxxx为event名称),作为触发事件的函数,该函数的参数类型就是EventArgsType;
/// </summary> /// </summary>
public class PushAttribute : Attribute public class PushAttribute : Attribute
{ {
public Type EventArgsType; public Type EventArgsType;
public string TriggerName; public string TriggerName;
//public PushAttribute(Type eventArgsType) public PushAttribute(Type eventArgsType)
//{ {
// EventArgsType = eventArgsType; EventArgsType = eventArgsType;
//} }
public PushAttribute(Type eventArgsType, string triggerName) public PushAttribute(Type eventArgsType, string triggerName)
{ {
EventArgsType = eventArgsType; EventArgsType = eventArgsType;
......
...@@ -153,11 +153,18 @@ namespace FObjBase.Reflect ...@@ -153,11 +153,18 @@ namespace FObjBase.Reflect
if (anyEvents.Any(ae => ae.name == eventInfo.Name)) if (anyEvents.Any(ae => ae.name == eventInfo.Name))
continue;//已经添加了 continue;//已经添加了
string triggerName;
if (string.IsNullOrEmpty(pushAttribute.TriggerName))
{
triggerName = "Trigger_" + eventInfo.Name;
}
else {
triggerName = pushAttribute.TriggerName;
}
var anyEvent = new AnyEvent() var anyEvent = new AnyEvent()
{ {
name = eventInfo.Name, name = eventInfo.Name,
triggerName = pushAttribute.TriggerName, triggerName = triggerName,
retType = pushAttribute.EventArgsType retType = pushAttribute.EventArgsType
}; };
anyEvents.Add(anyEvent); anyEvents.Add(anyEvent);
...@@ -324,6 +331,7 @@ namespace FObjBase.Reflect ...@@ -324,6 +331,7 @@ namespace FObjBase.Reflect
//触发事件!!! //触发事件!!!
var methodInfo = GetType().GetMethod(anyEvent.triggerName); var methodInfo = GetType().GetMethod(anyEvent.triggerName);
var obj = rData.data.ToObject(anyEvent.retType); var obj = rData.data.ToObject(anyEvent.retType);
//出错,就提示,肯定是客户端忘记写 "Trigger_XXXX"
methodInfo.Invoke(this, new object[] { obj }); methodInfo.Invoke(this, new object[] { obj });
} }
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment