Hi,
I would like to know if it is possible for dependency injection to work in the ApplicationService, if one would implement generics within the custom repository?
Something like this...
Custom repository interface:
public interface ICustomRepository<TEntity> : IRepository<TEntity, int>, ITransientDependency
where TEntity : class, IEntity<int>
{
List<TEntity> GetRepositoryList();
}
Custom repository:
public class CustomRepository<TEntity> : ApplicationRepositoryBase<TEntity>, ICustomRepository<TEntity>
where TEntity : class, IEntity<int>
{
public CustomRepository(IDbContextProvider<ApplicationDbContext> dbContextProvider)
: base(dbContextProvider)
{
}
public List<TEntity> GetRepositoryList()
{
}
}
}
Custom application service:
public class CustomAppService : CaerusAppServiceBase, ICustomAppService
{
private readonly ICustomRepository<CustomEntity> _customEntityRepository;
public CustomAppService (ICustomRepository<CustomEntity> customEntityRepository)
{
_customEntityRepository = customEntityRepository;
}
}
4 Answer(s)
-
0
You can register it like that:
IocManager.Register(typeof(ICustomRepository<>), typeof(CustomRepository<>), DependencyLifeStyle.Transient); IocManager.Register(typeof(ICustomRepository<,>), typeof(CustomRepository<,>), DependencyLifeStyle.Transient);in your Module's Initialize method.
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Thank you very much.
So does this then mean that the repository interface and implementation of it must reside within the Core assembly?
Currently I have the interface in the Core assembly and the implementation of it in the EntityFramework assembly. I am running into the problem of not being able to reference the custom repository in the core module class because of that.
What is the correct way to implement this?
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Hi,
Your interface should be in .Core project. Your implementation should be in .EntityFramework project. And finally, your IocManager registration code should be in your .EntityFramework project's module class's Initialize method.
Have a nice day.
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Thank you Halil :)
Have a great day!
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image)