C# 通过反射获取特性

  /// 
        /// 通过反射获取特性
        /// 
        /// 
        /// 
        public string GetTableNameByClassName(string className)
        {
            //获取当前应用程序(解决方案)的所有程序集
            Assembly[] appAssemblies = AppDomain.CurrentDomain.GetAssemblies();
            //过滤出当前应用程序下的自定义的程序集(解决方案下的所有项目) 建议:自己创建的项目建议统一一个前缀,这样才能进行过滤
            List filterAssemblies = appAssemblies.Where(x=>x.FullName.StartsWith("你的项目前缀"))
                                                         .Select(e=>e.FullName).ToList();
            for (int i = 0;i< filterAssemblies.Count;i++)
            {
                //加载程序集
                Assembly currentAssembly = Assembly.Load(filterAssemblies[i]);
                if (currentAssembly != null)
                {
                    //通过反射动态获取类的信息
                    Type type = currentAssembly.GetType(filterAssemblies[i].Split(",")[0] + "." + className);
                    if (type == null)
                    {
                        continue;
                    }
                    //获取该类的特性值
                    var tableAttribute = type.GetCustomAttribute().Name;
                    if (tableAttribute.IsNullOrEmpty())
                    {
                        throw Oops.Oh("未找到指定类的信息");
                    }
                    return tableAttribute;
                }
                else
                {
                    throw Oops.Oh("未找到目标程序集");
                }
            }
            throw Oops.Oh("未找到指定类的信息");
        }

你可能感兴趣的:(c#,java,开发语言)