利用特性区分查找方法,并通过反射调用方法
Posted kqnll
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用特性区分查找方法,并通过反射调用方法相关的知识,希望对你有一定的参考价值。
如示例代码,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} 类名:{0} 函数:{1} 错误描述:{2}", this.GetType().Name, methodName, ex.Message, ex.Source); LogService.Instance.Fatal("执行函数异常!", errStr); return; } }
被调用到的方法
[Description("43112")] public void ReceiveBdGztzJqList(string buf) { }
以上是关于利用特性区分查找方法,并通过反射调用方法的主要内容,如果未能解决你的问题,请参考以下文章