我创建了这个问题,解释了我作为参考所采取的步骤,因为我的搜索花了很长时间,不知道在哪里以及如何找到这个解决方案。
我正在我的业务逻辑项目中创建一个 T4 模板,用于基于我的 T4 模板所在位置的现有类和其他项目(相同的解决方案)创建一些类。我已经从有形的模板库中加载了 VisualStudioHelper 包含。这对于从我的 Entity-Project 获取实体类有很大帮助。
Project targetProject= VisualStudioHelper.GetProject("ProjectName");
从那里我得到了我的课:
var allClasses = VisualStudioHelper.CodeModel.GetAllCodeElementsOfType(targetProject.CodeModel.CodeElements, EnvDTE.vsCMElement.vsCMElementClass, false);
CodeClass targetClass= allClasses
.Cast<CodeClass>()
.Where(p => p.Name == "ClassName")
.Single();
现在我有我的类,我可以在其中查询我的属性:
var allProperties = VisualStudioHelper.CodeModel.GetAllCodeElementsOfType(targetClass.Members, EnvDTE.vsCMElement.vsCMElementProperty, true);
我发现(显然)基类的属性没有注册为目标 CodeClass 元素的属性。
有人可以帮我查询 T4 模板的基类属性吗?
如前所述,T4 位于我的业务逻辑层 (BLL) 中,目标实体类位于一个常见的实体项目中,因为我使用了 EF-CodeFirst,其中我的 BLL 中的实体与 DAL 中的实体完全相同。基类来自我自己编写的公共库项目 (Nuget),其中包含我在使用 EF-CodeFirst 时使用的每个实体的属性。
希望可以有人帮帮我。
亲切的问候, Luuk Krijnen