2

以下のようなコンストラクターを持つ 1 つのクラスをすべて更新する複数の開発者がいます。

public class A
{
    private readonly IB<W, X> _property1;
    private readonly IB<Y, Z> _property2;

    public MyClass(IC c)
        : this(
            new IB<W, X>(),
            new IB<Y, Z>(c)
        )
    {
    }

    public MyClass(
        IB<W, X> property1,
        IB<Y, Z> property2
    )
    {
        _property1 = property1;
        _property2 = property2;
    }
}

開発者が既存のファイルを編集せずに新しいパラメーターをコンストラクターに追加できるようにしたいと考えています。これにより、T4 テンプレートを使用して以下のような変更を生成できますが、これは現在、私の知る限り C# では許可されていません。 .

public partial class A
{
    private readonly IB<U, V> _property3;

    public partial MyClass(IC c)
        : this(
           new IB<U, V>()                
        )
    {
    }

    public partial MyClass(
        IB<U, V> property3
        )
    {
        _property3 = property3;
    }
}

このコードは非常に汎用的で、ほとんどの場合同じです。T4 テンプレートを使用して一部を生成していますが、生成されたコードを手動でクラスにコピーする必要があります。私がやりたいことは、MyClass (または何か他のもの) の複数の部分クラスを持つことで、いつでもコードを生成し、必要に応じて 1 つのファイルを手動で更新できるようにすることです。問題は、これを可能にするコードを構造化する方法を考えられないことです。これを達成できる方法を考えられる人はいますか?

編集1:質問をより明確にするために更新

4

3 に答える 3

3

そのためだと思いますpartial

クラスまたは構造体、インターフェイス、またはメソッドの定義を 2 つ以上のソース ファイルに分割することができます。各ソース ファイルには型またはメソッド定義のセクションが含まれており、アプリケーションのコンパイル時にすべての部分が結合されます。

http://msdn.microsoft.com/en-us/library/wa80x488%28v=vs.90%29.aspx

public partial class MyClass
{
    public void MyClass()
    {
    }
}

public partial class MyClass
{
    public void MyClass(Foo bar)
    {
    }
}
于 2013-11-08T09:22:40.647 に答える
0

サブバージョン管理の使用を検討しましたか。例: TortoiseSVN ( http://tortoisesvn.net/about.html )

SVN は、複数の開発者によるコード変更のマージを管理します。コードのクリティカル セクションで作業している場合、ファイルをロックして、他のプログラマがコードの変更をコミットするのを一時的に防ぐことができます。

于 2013-11-08T09:31:27.523 に答える
0

部分的なクラスも機能しますが、DI コンテナーを使用する方が適している可能性があります。

于 2013-11-08T09:24:13.170 に答える