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

时间:2018-06-19 18:39:00

标签: c# .net t4 system.type

我使用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和其他地方都发现了一些有关类似情况的帖子,但是没有一种解决方案对我有用。 那么应该怎么做呢?

1 个答案:

答案 0 :(得分:0)

您可以使用:

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