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