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

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)
        {
            
        }

 

以上是关于利用特性区分查找方法,并通过反射调用方法的主要内容,如果未能解决你的问题,请参考以下文章

.NET Core反射获取带有自定义特性的类,通过依赖注入根据Attribute元数据信息调用对应的方法

Java高级特性—反射和动态代理

关于用java反射调用一个类里面的方法并执行

反射学习

利用java反射调用类的属性和方法

学习--反射