私の 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;
}