0

我正在使用 C# 开发 ASP.NET MVC3。我收到如下错误

Type 'Test' already defines a member called 'Test' with the same parameter types

我的代码是:

public partial class Test
{
    Test()
    {
       //some code
    }
}

public partial class Test
{
    Test()
    {
        days = new List<SelectListItem>();
    }

    public IList<SelectListItem> days { get; set; }
}

两个类都在不同的文件中。
我不想修改第一个部分类。那么我该如何处理这种我必须调用同一个构造函数两次的情况呢?

4

2 回答 2

7

一种方法是partial方法:

public partial class Test
{
    partial void OnCtor() // implement the partial method
    {
       //some code
    }
}

public partial class Test
{
    partial void OnCtor(); // declare the partial method
    Test()
    {
        days = new List<SelectListItem>();
        OnCtor();          // invoke the partial method **if implemented**
    }

    public IList<SelectListItem> days { get; set; }
}

关键:如果你没有在某个地方添加一个带有实现OnCtor的方法,那么它会完全从调用代码中消失,即调用没有被编译。

这是代码生成器中的一种常见方法,因为它允许生成的代码发布和宣传扩展点,然后开发人员可以在他们自己的部分类部分中自定义扩展点,但如果不这样做,则影响为零(性能等)实施的。

于 2012-08-15T10:58:52.763 回答
5

我会通过摆脱不必要的构造函数来解决它:

public partial class Test
{
    Test()
    {
       //some code
    }
}

public partial class Test
{
    private IList<SelectListItem> _days = new List<SelectListItem>();

    public IList<SelectListItem> days {
        get { return _days; }
        set { _days = value; }
    }
}
于 2012-08-15T11:01:39.117 回答