usingMicrosoft.AspNetCore.Mvc;usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Globalization;usingSystem.Linq;usingSystem.Reflection;usingSystem.Text;namespaceHh.Mes.Common.Reflect{publicstaticclassReflectHelper{privatestaticreadonlyList<string>MemberName=newList<string>(){"IsPrimaryKey","IsIgnore"};publicstaticstringGetExpressions<T>(Tt,stringtableName){StringBuilderstringBuilder=newStringBuilder();stringBuilder.Append(" 1=1 ");//获得此模型的公共属性PropertyInfo[]propertys=t.GetType().GetProperties();for(inti=0;i<propertys.Length;i++){#region自定义属性IsPrimaryKey,IsIgnore忽略varcustomAttributes=propertys[i].CustomAttributes;varisOk=false;foreach(vartempincustomAttributes){varnamedArguments=temp.NamedArguments;if(namedArguments==null||namedArguments.Count==0)continue;if(MemberName.Any(x=>x==namedArguments[0].MemberName)){isOk=true;break;}}if(isOk)continue;#endregionobjectvalue=propertys[i].GetValue(t,null);if(value==null||value.ToString()=="")continue;if(propertys[i].PropertyType==typeof(int)||propertys[i].PropertyType==typeof(int?)||propertys[i].PropertyType==typeof(short)||propertys[i].PropertyType==typeof(short?)||propertys[i].PropertyType==typeof(long)||propertys[i].PropertyType==typeof(long?)||propertys[i].PropertyType==typeof(decimal)||propertys[i].PropertyType==typeof(decimal?)||propertys[i].PropertyType==typeof(double)||propertys[i].PropertyType==typeof(double?)){//默认id为0的设置-11111不考虑if(!value.Equals(-11111)){stringBuilder.Append($" and {tableName}.{propertys[i].Name} like '%{value}%' ");}}elseif(propertys[i].PropertyType==typeof(string)){stringBuilder.Append($" and {tableName}.{propertys[i].Name} like '%{value}%' ");}}returnstringBuilder.ToString();}publicstaticList<Type>GetTypes<T>()whereT:class{varlistOfBs=(fromdomainAssemblyinAppDomain.CurrentDomain.GetAssemblies()fromassemblyTypeindomainAssembly.GetTypes()wheretypeof(T).IsAssignableFrom(assemblyType)selectassemblyType).ToList();returnlistOfBs;}publicstaticDictionary<string,string>GetDescriptions<T>(Tentity)whereT:class{vardescription=newDictionary<string,string>();foreach(variteminentity.GetType().GetProperties()){vardisplayName=item.GetCustomAttribute<DescriptionAttribute>();if(displayName!=null){description.Add(item.Name,displayName.ToString());}else{description.Add(item.Name,item.Name);}}returndescription;}publicstaticDictionary<string,Type>GetControlAreas<T>()whereT:class{varresult=newDictionary<string,Type>();varcontrols=GetTypes<T>().Where(x=>!string.IsNullOrWhiteSpace(x.GetCustomAttribute<AreaAttribute>()?.ToString()));foreach(varcontrolincontrols){varareaName=control.GetCustomAttribute<AreaAttribute>().RouteValue?.ToString();//areaName=CultureInfo.CurrentCulture.TextInfo.ToTitleCase(areaName);if(!result.ContainsKey(areaName)){result.Add(areaName,control);}}returnresult;}}}