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

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

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