欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 根据累的名称string,传参,执行该类下的方法(高端操作)

程序员文章站 2022-07-10 18:27:28
我有一个类 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

相关标签: C#