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. カスタムテンプレート(これは、小さなスニペットを使用してテキストファイルを作成し、それらの小さな部分を出力するクラスのツリーとファイルをつなぎ合わせるようなものです)

私は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 に答える