2009-08-29 9 views
4

あなたに質問してください。here質問してください。それは最初に定義されたクラスが重要であるのはなぜC# - 複数のジェネリック型のリストII

public class Metadata<DataType> where DataType : struct 
{ 
    private DataType mDataType; 
} 
  1. 同じインターフェースや抽象クラスから派生したものと交換され、それが多分のIList <>のメンバーは、いくつかの一般的なオブジェクト型を共有しなければならないためでしょうか?
  2. 共通型は、IList <型と同じ名前を持つ必要があります。 IList - > Tから派生、またはIList - > InterfaceT、ITから派生?

ありがとうございます。&よろしくお願いします。 ミラノ。

+2

質問をする代わりに直接質問してください。 – Cheeso

答えて

8

各ジェネリック型のインスタンス化は新しいタイプです。すなわちMetaData<int>MetaData<bool>とは異なるタイプです。 コンパイラは(.NETのrefelectorを使用して検査)

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

ですから、異質なタイプのリストを宣言することはできません。このようなタイプを生成します。 1つのタイプのリストしか宣言できません。したがって、すべての一般的なMetaData <クラスを抽象クラスまたはインタフェースから継承させる必要があります。

関連する問題