2012-06-30 24 views
0

我有以下定義:如何根據特定的對象類型對列表進行即時處理?

public class BaseEntity 
{ 
    ... 
    public BaseEntity() 
    { 

    } 
} 

public class KeyValuePair 
{ 
    public string key; 
    public string value; 
    public string meta; 
} 

public class KeyValuePairList : BaseEntity 
{ 
    public List<KeyValuePair> List {set; get;} 

    public KeyValuePairList(IEnumerable<KeyValuePair> list) 
    { 
     this.List = new List<KeyValuePair>(); 
     foreach (KeyValuePair k in list) { 
      this.List.Add(k); 
     } 
    } 
} 

我有10多個不同的類,如KeyValuePairKeyValuePairList都達到同樣的目的 - 前者定義對象,後者定義爲這些對象應放置在列表中。如何將此功能併入基類BaseEntity中,以便我不必在每個單獨的類中重新定義List實例化邏輯,即我希望能夠基於傳遞給構造函數的對象類型來實例化列表?有什麼建議麼?

+0

您在BaseEntity類中定義了第二個BaseEntity類嗎?我不認爲這是可能的。 **編輯**我認爲你的意思是成爲構造函數,對吧? –

+1

@Kevin:我認爲這是一個錯字,省略了'class',你得到一個構造函數。 –

+0

@凱文:是的。抱歉!我正在輸入一個更簡單的例子來看我的IDE。現在編輯這個問題。 – Legend

回答

4

你能使用泛型嗎?

public class BaseEntity<T> where T: class 
{ 
    public List<T> List { set; get; } 

    public BaseEntity(IEnumerable<T> list) 
    { 
     this.List = new List<T>(); 
     foreach (T k in list) 
     { 
      this.List.Add(k); 
     } 
    } 
} 

public class KeyValuePair 
{ 
    public string key; 
    public string value; 
    public string meta; 
} 

public class KeyValuePairList : BaseEntity<KeyValuePair> 
{ 
    public KeyValuePairList(IEnumerable<KeyValuePair> list) 
     : base(list) { } 
} 
+1

[FGITW](http://meta.stackexchange.com/q/18014/183013)。你贏了。 +1 –

+0

+1真棒。謝謝。我發現這個後,我正在朝着這種方式前進:http://stackoverflow.com/questions/12051/calling-base-constructor-in-c-sharp現在我也有你的答案。感謝您的時間。 – Legend

相關問題