2014-11-05 77 views
-1

我有兩個類(classA和classB),它們都從同一個類(classC)繼承。現在我需要創建繼承A或B列表的新泛型類(classAA)。是否可以在classAA中調用classC的方法。通用類繼承

public class classC 
{ 
    //... 
} 
public class classA : classC 
{ 
    //... 
} 
public class classB : classC 
{ 
    //... 
} 
public class classAA<T> : List<T> 
{ 
    //... 
} 
+1

也許你只是想'其中T:classC'在你的'classAA '聲明的約束? (順便說一句,即使在示例代碼中也遵循命名約定...) – 2014-11-05 09:37:24

+0

「ClassC」的調用方法對於「ClassC」列表有什麼意義? – 2014-11-05 09:37:30

+0

例如,classC擁有方法DrawObject()。在classAA中,我想爲List中的每個元素調用DrawObject()。 – user4086830 2014-11-05 09:43:01

回答

0

這通常不是從List<T>繼承一個好主意。 95%的時間你應該更喜歡構圖超過繼承。例如見:Why not inherit from List<T>?

最有可能您正在尋找類似:

public class classAA<T> 
    where T : ClassC 
{ 
    public List<T> MyList { get; set; } 

    public void Foo() 
    { 
     foreach (var item in this.MyList) 
     { 
      item.MethodOfClassC(); 
     } 
    } 
} 
0

我相信你想要這樣的東西。 Assumming:

class classC 
{ 
    public void DrawObject() { } 
} 

你可以把約束上T,這將是classC或其衍生物:

class classAA<T> : List<T> where T : classC 
{ 
    public void SomeMethod() 
    { 
     foreach (var item in this.Cast<classC>()) 
     { 
      // here you can call item.DrawObject() 
     } 
    } 
}