0

我正在开发一个需要动态构建 .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"
};

在此处输入图像描述

我想要做的是使用它并构造一个新的 .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;
    }
}

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

谢谢

4

2 回答 2

1

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

  1. CodeDom(来自 Microsoft的链接和文档的良好列表)
  2. T4 模板
  3. 自定义模板(这就像用小片段构建文本文件,然后将文件与发出这些小片段的类树拼凑在一起)

我已经完成了所有三个,我会推荐 T4 模板,这里有一个关于如何使用它的详尽示例。

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

但是您需要愿意深入研究并学习它,因为有很多东西要掌握。

于 2012-09-18T13:01:41.543 回答
-1

你考虑过使用CodeDom吗?

于 2012-09-18T12:57:48.673 回答