cen*_*cru 6 c# asp.net-mvc t4 templates razor
我确信这是一个非常奇怪的要求,但是这里有.
我们有一些客户配置代码,由我们编译成类库的C#类表示.创建这些配置类目前是我想要分配给开发人员以外的人的猴子工作.因此,我们正在构建一个"Configurator"网站,业务分析师可以通过填写包含所选相关选项的表单来生成有效的C#类.
从MVC网站中的模板生成C#类的最佳方法是什么?请注意,我不是在谈论动态生成和在运行时执行类:我们实际上生成的文本文件恰好包含将包含在完全不同的项目中的C#代码.
这被证明是谷歌正确的一个非常困难的话题!到目前为止出现的选项......
关于如何最好地接近这个的任何想法?
根据要求,这是输出类/文件的示例.此处的值覆盖基类中设置的值,具有客户特定的标签,验证等.这就是我们为客户定制产品的方式.
public class AreaRiskTemplate: AreaRiskTemplateBase
{
public override string EntityName { get { return "risk"; } }
public override string EntityNamePlural { get { return "risks"; } }
public override string EntityNameArticle { get { return "a"; } }
public override string CGovItemRefPrefix { get { return "R"; } }
public override void SetFieldDefinitions()
{
FieldDefinitions.Level1.IsImplemented = true;
FieldDefinitions.Level1.Label = "Category";
FieldDefinitions.Level1.IsVisibleInGrid = true;
FieldDefinitions.Level2.IsImplemented = true;
FieldDefinitions.Level2.Label = "Team";
FieldDefinitions.Level2.IsVisibleInGrid = true;
FieldDefinitions.Description.IsImplemented = true;
FieldDefinitions.Description.Label = "Description";
FieldDefinitions.Description.IsVisibleInGrid = true;
}
public override ModelStateDictionary Validate()
{
var msd = new ModelStateDictionary();
// add template-specific validation here
msd.Merge(base.Validate());
return msd;
}
public override List<string> Level1Options
{
get
{
return new List<string>
{
"Organisational",
"Financial",
"Operational",
"External",
"IT"
};
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新:目前正在http://msdn.microsoft.com/en-us/library/ee844259(v=vs.100).aspx上调查T4模板(感谢下面的评论).看起来很有希
我建议避免使用该网站,而只需使用 CodeSmith。您可以设计 CodeSmith 脚本,以便它会询问信息,然后生成所需的代码。尽管您必须购买 CodeSmith,但看起来工作量少了很多。
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |