这里是我想做些什么:可以在泛型类型约束上指定它必须实现泛型类型吗?
public interface IRepository<TSet<TElement>> where TSet<TElement> : IEnumerable<TElement>
{
TSet<TEntity> GetSet<TEntity>();
}
在.NET是这样的结构可能吗?
编辑:这个问题还不够清楚。这是我想做的事,扩大:
public class DbRepository : IRepository<DbSet<TElement>> {
DbSet<TEntity> GetSet<TEntity>();
}
public class ObjectRepository : IRepository<ObjectSet<TElement>> {
ObjectSet<TEntity> GetSet<TEntity>();
}
含义,我想约束类型: - 接受单个泛型参数 - 实现给定的一个泛型参数界面。
这可能吗?事实上,我只会对第一件事感到高兴。
public interface IRepository<TGeneric<TElement>> {
TGeneric<TArgument> GetThing<TArgument>();
}
这是可能的,但有什么意义?如果'TSet'实现'IEnumerable ',那么您可以在'IEnumerable '上设置限制。 –
Aliostad
2011-03-16 15:57:10
@Aliostad:查看编辑。我只想在函数被调用时设置“TElement”,而不是在界面上作为类型参数。 – 2011-03-16 16:43:27
'元素'和'实体'是不同的东西吗? – AakashM 2011-03-16 16:47:43