我已經創建了這個問題,解釋了我作爲參考的步驟,因爲我的搜索花了很長時間不知道在哪裏以及如何找到此解決方案。如何使用envDTE命名空間在T4中獲取基類的屬性?
我在我的業務邏輯項目中創建了一個T4模板,用於根據現有的類和其他項目(相同的解決方案)創建一些類,作爲放置我的T4模板的位置。我已經從有形的模板庫中加載了VisualStudioHelper包含。這對從我的實體項目中獲取實體類很有幫助。
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中完全相同,因此被定位的實體類位於通用實體項目中。基礎類來自我編寫自己的Common Library項目(Nuget),其中包含使用EF-CodeFirst時使用的每個實體的屬性。
希望有人能幫助我。
親切的問候, Luuk Krijnen