我的 C# 应用程序定义了以下枚举:
public enum ItemTypes {
REQUIREMENTS,
TEST_CASES
}
现在我想定义一个接口,它获取与其中一个匹配的所有项目ItemTypes
并将它们作为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;
}