[英]Get class properties in t4 template (vs2015)
使用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和其他地方都发现了一些有关类似情况的帖子,但是没有一种解决方案对我有用...那么应该怎么做呢?
您可以使用:
Type classType = Assembly.GetType(classname)
然后打电话
var listPropsFiltro = classType.GetProperties().Select(f => f.Name).ToList();
您可以尝试通过以下方式获取当前程序集:
Assembly.GetExecutingAssembly()
如果执行的Assembly不等于包含类的项目Assembly,则可以执行以下操作。
Assembly project Assembly = Assembly.LoadFrom(pathToProject)
参见msdn 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.