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

Kru*_*odi 0 c# constructor partial-classes asp.net-mvc-3

我正在使用C#编写ASP.NET MVC3.我收到如下错误

Type 'Test' already defines a member called 'Test' with the same parameter types
Run Code Online (Sandbox Code Playgroud)

我的代码是:

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

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

    public IList<SelectListItem> days { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ell 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; }
}
Run Code Online (Sandbox Code Playgroud)

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

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


小智 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; }
    }
}
Run Code Online (Sandbox Code Playgroud)