這裏是我想做些什麼:可以在泛型類型約束上指定它必須實現泛型類型嗎?
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