私の C# アプリケーションは、次の列挙を定義します。
public enum ItemTypes {
REQUIREMENTS,
TEST_CASES
}
ItemTypes
ここで、 の 1 つに一致するすべてのアイテムを取得し、それらを として返すインターフェイスを定義したいと思いますObservableCollection
。どの列挙値が渡されるかわからないので、ジェネリックを使用するのT
が良いと思いました。T
ただし、認識されないため、以下は機能しません。
interface IDataSourceService {
ObservableCollection<T> GetItems(Enums.ItemTypes itemType);
}
実装クラスは次のようになります (多かれ少なかれ疑似コード)。
ObservableCollection<T> GetItems(Enums.ItemTypes itemType) {
// Define an ObservableCollection which could hold "anything".
ObservableCollection<T> result = null;
switch (itemType) {
case Enums.ItemTypes.REQUIREMENTS:
// Get all requirements from the data source
ObservableCollection<CRequirement> result = new ObservableCollection<CRequirement>();
result = foo();
break;
case Enums.ItemTypes.TEST_CASES:
// Get all test cases from the data source
ObservableCollection<CTestCase> result = new ObservableCollection<CTestCase>();
result = bar();
break;
}
return result;
}