如何通过初始化部分类的构造函数来调用Partial Classes中的对象?

时间:2012-08-15 10:57:31

标签: c# asp.net-mvc-3 constructor partial-classes

我正在使用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; }
}

两个类都在不同的文件中 我不想修改第一个部分类。 那么我怎样才能处理这种情况,我要两次调用相同的构造函数呢?

2 个答案:

答案 0 :(得分: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方法,那么它从调用代码完全消失,即呼叫未编译。

这是代码生成器中的常用方法,因为它允许生成的代码发布和通告扩展点,然后开发人员可以在他们自己的部分类中自定义,但是如果没有影响(性能等),则他们没有实施。

答案 1 :(得分: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; }
    }
}