繁体   English   中英

在T4模板中获取类属性(VS2015)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM