Zenject - установить универсальную привязку
Добрый день.
У меня есть интерфейс:
public interface IRepository<T>
{
//Stuff
}
и реализация:
class Repository<T> : IRepository<T>
{
//Stuff implementation
}
Теперь я хотел бы связать все это вместе в контейнере.
Я обнаружил, что Zenject похож на Ninject synthax, поэтому я попробовал следующее:
public class IoC : MonoInstaller
{
public override void InstallBindings()
{
Container.Bind(typeof(IPersistence<>)).To(typeof(Persistence<>));
}
}
Это вызывает исключение, когда я пытаюсь проверить сцену (Правка -> Zenject -> Проверить текущие сцены):
Assert hit! Invalid type given during bind command.
Expected type 'Assets.Sources.Core.Infrastructure.Repository`1[T]' to derive from
type 'IRepository`1'
Поэтому я подозреваю, что это просто неправильный способ сделать общие привязки. Интересно, что является правильным.
1 ответ
Решение
Это была ошибка в Zenject, которая должна быть исправлена с сегодняшнего дня. Теперь вы должны иметь возможность привязывать абстрактные открытые универсальные типы к конкретным открытым универсальным типам, как в вашем примере.
Можете ли вы попробовать обновление из основной ветки репозитория github?