2009-08-29 44 views
4

請問您能否爲我澄清問題hereC# - 一個列表中的多種通用類型II

爲什麼重要的是,最初定義的類:

public class Metadata<DataType> where DataType : struct 
{ 
    private DataType mDataType; 
} 
  1. 被替換爲一個從同一個接口或抽象類派生這可能是因爲IList的<>成員都必須具有一些共同的對象類型?
  2. 必須與IList <>類型具有相同的名稱,例如。 IList - >來源於T,或IList - >來源於InterfaceT,IT?

謝謝& Regards, Milan。

+2

你能否直接說出問題,而不是指出問題? – Cheeso 2009-08-29 10:51:46

回答

8

每個泛型類型實例化都是一種新類型。即MetaData<int>是與MetaData<bool>不同的類型。 編譯器會生成一種像這樣(檢查使用的.Net refelector)

Namespace.Metadata`1[[System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] 

所以你不能聲明異構類型的列表。您只能聲明一種類型的列表。因此有必要使所有通用的元數據繼承自抽象類或接口。

相關問題