C# 根据累的名称string,传参,执行该类下的方法(高端操作)
程序员文章站
2022-04-15 19:03:25
我有一个类 class ExportData { [Export("TextInfo")] public string ExportInfo(Document document) { return "这是返回的字符串"; } [Export("TextInfo2")] public string ExportInfo2(Document docu...
我有一个类
class ExportData
{
[Export("TextInfo")]
public string ExportInfo(Document document)
{
return "这是返回的字符串";
}
[Export("TextInfo2")]
public string ExportInfo2(Document document,int a)
{
return "这还是返回的字符串";
}
}
我要通过代码,去创建上面那个类对象,把该类里边所有方法执行一遍,并获取到 每个方法返回的字符串和 Export 中的字符串信息,方法入下
private void ExportData(Type type)
{
//导出道路信息及指标
Dictionary<string, string> resultDic = new Dictionary<string, string>();
object roadObj = Activator.CreateInstance(type);//实例化
foreach (MethodInfo m in type.GetMethods())
{
foreach (Attribute a in m.GetCustomAttributes(true))
{
ExportAttribute ea = a as ExportAttribute;
if (null != ea)
{
if (m.Name == "TextInfo2")//这个方法需要传入3个参数
{
resultDic.Add(ea.Key, (string)m.Invoke(roadObj, new object[] { RevitDoc, 3 }));
}
else
{
resultDic.Add(ea.Key, (string)m.Invoke(roadObj, new object[] { RevitDoc }));
}
}
}
}
//最终得到 resultDic ,即为 export 字符串 和 方法返回的字符串的字典集合
}
奥还需要用到这个类
[AttributeUsage(AttributeTargets.Method)]
class ExportAttribute : System.Attribute
{
private string key;
public string Key { get => key; set => key = value; }
public ExportAttribute(string key)
{
this.Key = key;
}
}
最后,调用方法执行即可
ExportData(typeof(ExportData));
公司大神写的,仅记录。
本文地址:https://blog.csdn.net/qq_33222460/article/details/109639100
上一篇: Java调用Webservice接口(.asmx后缀)
下一篇: 我的JVM(一):虚拟机基础概念