Это может быть глупый вопрос, но я не могу найти решение для него.
У меня есть эта структура (упрощенная для краткости):
namespace Test
{
public interface IEntity
{ }
public class BaseEntity : IEntity
{ }
public class OneEntity : BaseEntity
{ }
public class Configuration<T> where T : IEntity
{
}
public class Service
{
public Dictionary<string, Configuration<IEntity>> Configurations = new Dictionary<string, Configuration<IEntity>>();
public void RegisterConfiguration(string name, Configuration<T> configuration) where T : IEntity
{
if(Configurations.ContainsKey(name))
return;
Configurations.Add(name, configuration); //Error: Unable to convert Configuration<T> to Configuration<IEntity>
}
}
}
Я думаю, я не могу преобразоватьуниверсальный тип интерфейса, но как мне этого добиться? Я мог бы написать RegisterConfiguration
как:
public void RegisterConfiguration(string name, Configuration<IEntity> configuration)
, но тогда я не смог бы вызвать его с помощью одной из моих сущностей (даже если все они реализуют IEntity
).
Должно быть что-то, что я не правильно понял с помощью дженериков, но я не могу понять, что.