令人惊讶的是,我没有在堆栈溢出中看到这个问题。
我有一个接口,定义如下:
IDatabaseRepository<in T> where T : DatabaseConfigBase
我有多种实现,例如:
MongoDatabaseRepository<in MongoDatabaseConfig>
MySqlDatabseRepository<in MySqlDatabaseConfig>
我还有一个工厂,可以向我返回所需的存储库,因此我可以在运行时根据配置检查正确的数据库:
class RepositoryFactory
{
public RepositoryFactory(IEnumerable<IDatabaseRepository> dbImplementations)
public IEnumerable<IDatabaseRepository<>> Create(string dbName)
}
最后一个类无效,因为我不能接受仅IDatabaseRepository的IEnumerable。编译器要求我指定IDatabaseRepository<T>
,但我不知道T是什么?我想要我所有实现的列表,无论它们的T大小!
除了对(对象)进行装箱和拆箱以外,还有其他解决方案吗?