我想创建Cache服务,它将常规服务作为构造函数参数.然后,当缓存键不存在时,我想调用常规服务并更新缓存.我的想法是在常规服务和缓存服务中使用相同的界面.但是,当我尝试注入缓存服务实现和执行方法时,我得到异常:
类型IUserRepository的已注册委托引发了异常.配置无效.CacheUserRepository类型直接或间接取决于它自身.
我的代码:
public interface IUserRepository
{
UserDTO Get(int userId);
}
public class UserRepository : IUserRepository
{
public virtual UserDTO Get(int userId)
{
return new UserDTO() { Id = 1, Age = 28, Name = "Emil" };
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的缓存存储库:
public class CacheUserRepository : IUserRepository
{
private readonly IUserRepository _userRepository;
private readonly ICache _cache;
public CacheUserRepository(IUserRepository userRepository, ICache cache)
{
_userRepository = userRepository;
_cache = cache;
}
public DTO.UserDTO Get(int userId)
{
var userKey = "User_" + userId.ToString();
UserDTO val …Run Code Online (Sandbox Code Playgroud)