2012-08-15 47 views
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; } 
} 

兩個類都在不同的文件。
我不想修改第一部分類。 那麼如何處理這種類型的情況,我必須調用相同的構造函數兩次?

回答

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; } 
    } 
} 
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方法,那麼它完全從調用代碼蒸發,即調用不被編譯。

這是代碼生成器中的常用方法,因爲它允許生成的代碼發佈和通告擴展點,然後開發人員可以在它們自己的部分類中自定義這些擴展點,但影響不大(性能等)如果他們沒有實施。

相關問題