首页 > 其他 > 详细

利用特性区分查找方法,并通过反射调用方法

时间:2018-07-06 20:10:25      阅读:125      评论:0      收藏:0      [点我收藏+]

如示例代码,buf带描述标记

/// <summary>
/// 分析 数据
/// </summary>
/// <param name="buf"></param>
public void AnalysisDatabuf(string buf)
{
if (string.IsNullOrEmpty(buf))
return;

try
{
string optNo = buf.Substring(0, 5);
string description = string.Empty;

DescriptionAttribute descriptionAttribute = null;

//获取方法集
MethodInfo[] methodInfos = this.GetType().GetMethods();

//根据特性找方法
foreach (var v in methodInfos)
{
object[] customAttributes = v.GetCustomAttributes(false);
if (null != customAttributes && customAttributes.Length > 0)
{
descriptionAttribute = customAttributes[0] as DescriptionAttribute;
if (null == descriptionAttribute)
continue;

description = descriptionAttribute.Description;

//找到方法后,调用方法
if (description.ToUpper() == optNo.ToUpper())
{
v.Invoke(this, new object[] { buf });
break;
}
}
}
}
catch (Exception ex)
{
string methodName = System.Reflection.MethodInfo.GetCurrentMethod().Name;
string errStr = string.Format("错误源:{3}\r\n类名:{0} 函数:{1} 错误描述:{2}", this.GetType().Name, methodName, ex.Message, ex.Source);
LogService.Instance.Fatal("执行函数异常!", errStr);
return;
}

}

被调用到的方法

  [Description("43112")]
        public void ReceiveBdGztzJqList(string buf)
        {
            
        }

 

利用特性区分查找方法,并通过反射调用方法

原文:https://www.cnblogs.com/KQNLL/p/9275299.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!