【发布时间】:2018-06-19 18:38:59
【问题描述】:
使用 VS2015,我正在修改控制器和视图脚手架的默认 t4 模板。在此模板中,我可以直接访问相关模型的属性,但我还需要获取与模板位于同一项目中的类的属性。我在 t4 模板的顶部添加了这个:
<#@ Assembly Name="C:\_code\MyProject\obj\Debug\MyProject.dll" #>
<#@ import namespace="MyProject.Models.Filtros" #>
然后我可以得到类的属性
var listPropsFiltro = typeof(FiltroClientes).GetProperties().Select(f => f.Name).ToList();
这工作正常。
现在我的问题是,我不必在代码中编写类的名称(例如,FiltroClientes),而是必须使用类似的东西来构造它
var classname = "Filtro" + ControllerRootName;
当然这是行不通的:
var listPropsFiltro = typeof(classname).GetProperties().Select(f => f.Name).ToList();
我在 stackexchange 和其他地方发现了一些关于类似情况的帖子,但没有一个解决方案对我有用...... 那么这样做的正确方法应该是什么?
【问题讨论】:
-
是的 typeof(classname) 应该是 System.String ...没有帮助。如果您已经在加载程序集,为什么不加载您所在的项目,然后从中获取类型?当然,您必须重建它才能获得最新的结果,但应该不会太麻烦。
标签: c# .net t4 system.type