从类生成c#.cs文件

时间:2012-09-18 12:55:10

标签: c#

我正在开发一个项目,我需要动态构建.cs文件的实例。

我使用接口来构建数据,就像这样(它们确实有所不同)

public interface IMetaClass
{
    string ParentName { get; set; }
    string Namespace { get; set; }
    string ClassName { get; set; }
    string FriendlyName { get; set; }
    string Description { get; set; }
}

我也有从这些接口继承的类

public class XavierMetaClass : IMetaClass
{
    public string ParentName { get; set; }
    // ...
}
构建和填充的

示例

var cell = new XavierMetaClass
{
    ParentName = mc.Parent.Name,
    Namespace = mc.Namespace,
    ClassName = mc.Name,
    FriendlyName = mc.FriendlyName,
    Description = mc.Description + "test"
};

enter image description here

我想做什么是这样做并构建一个新的.cs文件,其中的数据存储在上面的变量中,结果看起来像这样。

public class CellPhone : IMetaClass
{
    public string ParentName { get { return "CatalogEntry"; } }
    public string Namespace { get { return "Mediachase.Commerce.Catalog.User"; } }
    public string ClassName { get { return "CellPhone"; } }
    public string FriendlyName { get { return "Cell sPhone"; } }
    public string Description { get { return "Contains meta data about phone test"; } }

    private readonly IMetaClass _metaClass;

    public CellPhone()
    {
        // Noop 
    }

    public CellPhone(IMetaClass metaClass)
    {
        _metaClass = metaClass;
    }
}

是否有任何已知的方法框架可以帮助我实现这一目标?

由于

2 个答案:

答案 0 :(得分:1)

简而言之,您有几个选择。

  1. CodeDom(来自Microsoft here的链接和文档的良好列表)
  2. T4 Templating
  3. 自定义模板(这就像构建带有少量片段的文本文件,只是将文件拼接在一起,发出那些小块的类树)。
  4. 我已经完成了所有三项工作,我建议使用T4模板,这里有一个关于如何使用它的详尽示例。

    http://www.codeproject.com/Articles/269362/Using-T4-Templates-to-generate-custom-strongly-typ

    但你需要愿意深入挖掘并学习它,因为有很多东西需要掌握。

答案 1 :(得分:-1)

您考虑使用CodeDom吗?