码迷,mamicode.com
首页 > 其他好文 > 详细

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

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

标签:custom   oid   get   list   attribute   span   nal   \n   void   

如示例代码,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)
        {
            
        }

 

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

标签:custom   oid   get   list   attribute   span   nal   \n   void   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!