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)
两个类都在不同的文件中.
我不想修改第一个部分类.那么我怎样才能处理这种情况,我要两次调用相同的构造函数?
一种方法是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)
| 归档时间: |
|
| 查看次数: |
2488 次 |
| 最近记录: |