2

我们有多个开发人员都在更新一个具有如下构造函数的类。

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:更新以尝试使问题更清晰

4

3 回答 3

3

我想这就是partial目的。

可以将类或结构、接口或方法的定义拆分到两个或多个源文件中。每个源文件都包含一个类型或方法定义的部分,并且在编译应用程序时将所有部分组合在一起。

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

部分类可以工作,但也许这更适合使用 DI 容器

于 2013-11-08T09:24:13.170 回答
0

您是否考虑过使用子版本控制。例如:TortoiseSVN ( http://tortoisesvn.net/about.html .)

SVN 管理合并来自多个开发人员的代码更改。当您在代码中的关键部分工作时,您可以锁定文件,暂时阻止其他程序员提交他们的代码更改。

于 2013-11-08T09:31:27.523 回答