让我先从我正在使用的对象的定义开始,然后我将尽力解释我的目标:
class CacheItem<T> where T : EntityBase
class CacheCollection : List<CacheItem<EntityBase>>
好的,所以我的通用集合CacheCollection应该是一个CacheItems列表,我可以根据各种业务规则进行操作。我想确保的一件事是,每个CacheCollection I instanciate仅适用于单一类型的EntityBase。例如,我有两个继承自EntityBase的类;案例和客户。我希望每个CacheCollection只处理其中一种类型,而不是混合它们。
我可以/应该做些什么改变来满足这个设计要求?
答案 0 :(得分:3)
你总是可以让CacheCollection成为泛型类型,然后将继承树传递给CacheItem:
class CacheCollection<T> : List<CacheItem<T>> where T : EntityBase
答案 1 :(得分:1)
听起来你想要摆脱CacheCollection
(没有任何目的)并且有例如。
List<CacheCollection<Case>> cases;
List<CacheCollection<Client>> clients;
没有
答案 2 :(得分:0)
使CacheCollection具有通用性,因此您明确说明它可以包含的类型:
class CacheCollection<T> : List<CacheItem<T>> where T : EntityBase {}
答案 3 :(得分:0)
有什么问题
class CacheCollection<T> : List<CacheItem<T>> where T:EntityBase