net6.0解析实体字典
- 开发笔记
- 2024/1/25 17:16:31
- 人已阅读
简介此代码来自项目:EntityDicGenerator
net6.0解析实体字典 //结构:<doc> //<assembly> //<name>QcManage.Domain</name> //</assembly> //<members> //<member name = "T:OCR.WebAPI.Entitys" > //< summary > //实体基类 //</ summary > //</ member > //</members> //</doc> OpenFileDialog openImageDialog = new OpenFileDialog(); openImageDialog.Filter = "XML Files (*.xml)|*.xml"; //openImageDialog.Multiselect = false; if (openImageDialog.ShowDialog() == DialogResult.OK) { //MessageBox.Show(openImageDialog.FileName); //var projectPath = Regex.Split(openImageDialog.FileName, @"bin\\", RegexOptions.IgnoreCase)[0]; var namespaceName = openImageDialog.SafeFileName.Replace(".xml", ""); XDocument doc = XDocument.Load(openImageDialog.FileName); //var list = doc.Descendants("member") //定位到节点member // .Where(p => p.Attribute("name").Value.StartsWith("T:" + namespaceName) && // !p.Attribute("name").Value.Contains("Dto") && // !p.Attribute("name").Value.Contains("Enum") && // !p.Attribute("name").Value.Contains("Common")).ToList(); //若要筛选就用上这个语句 var assembly = Assembly.LoadFrom(openImageDialog.FileName.Replace(".xml", ".dll")); var ReferencedAssemblies = assembly.GetReferencedAssemblies(); var classList = assembly.GetTypes().Where(t => t.IsClass && t.BaseType.FullName.Contains("BaseEntity") && !t.BaseType.FullName.Contains("Dto")).ToList(); foreach (var item in classList) { var nowTableFields = doc.Descendants("member").Where(p => p.Attribute("name").Value.StartsWith("P:" + namespaceName + "." + item.Name)).ToList(); foreach (var itemxxx in nowTableFields) { } Helper.LogInfo(item.Name + "的表字段日志", item.Name, true); foreach (var item2 in item.GetProperties()) { var xxdd = 1; //P:OCR.Domain.Sys_AreaSaler.ZoneCode var descCn = nowTableFields.Where(xx => xx.Attribute("name").Value == "P:" + namespaceName + "." + item.Name + "." + item2.Name).FirstOrDefault()?.Element("summary").Value; Helper.LogInfo("名称:" + item2.Name + "、中文描述:" + descCn?.Replace("\n", "").Trim() + "、类型:" + item2.PropertyType, item.Name, true); } } //创建对象 //var obj = Activator.CreateInstance(item2); }
文章评论
- 消灭零回复