【发布时间】:2016-11-22 14:45:05
【问题描述】:
我创建了这个问题,解释了我作为参考采取的步骤,因为我的搜索花费了很长时间,不知道在哪里以及如何找到这个解决方案。
我正在我的业务逻辑项目中创建一个 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 时使用的每个实体的属性。
希望有人可以帮助我。
亲切的问候, 卢克·克里宁
【问题讨论】:
标签: t4 envdte tangible-t4-editor