我正在使用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; }
}
两个类都在不同的文件中 我不想修改第一个部分类。 那么我怎样才能处理这种情况,我要两次调用相同的构造函数呢?
答案 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; }
}
}