public interface IApiUserProvider
{
Dictionary<Guid, string> UserNamesByToken { get; }
string this[Guid token] { get; }
}
public class ApiUserProvider : IApiUserProvider
{
private readonly ICacheProvider _cacheProvider;
private readonly IEntitySet<ApiUser> _apiUsers;
private string CacheKey
{
get
{
return string.Format("{0}-{1}", GetType().Name, "ApiUsersByToken");
}
}
public ApiUserProvider(ICacheProvider cacheProvider, IEntitySet<ApiUser> apiUsers)
{
_cacheProvider = cacheProvider;
_apiUsers = apiUsers;
}
public Dictionary<Guid, string> UserNamesByToken
{
get
{
return _cacheProvider.Get(CacheKey, () => _apiUsers.Where(u => u.IsActive).ToDictionary(u => u.Token, u => u.Name));
}
}
public string this[Guid token]
{
get { return UserNamesByToken.GetValueOrDefault(token); }
}
}当我用ApiUser this[Guid token] { get; }替换string this[Guid token] { get; }时,我在这段代码中得到错误,如下所示
return string : cannot convert to object
return _cacheProvider.Get(CacheKey, () => _apiUsers.Where(u => u.IsActive).ToDictionary(u => u.Token, u => u.Name));请告诉我如何将其转换为object类型
发布于 2015-10-08 23:55:14
首先,您必须更新字段UserNamesByToken
public Dictionary<Guid, ApiUser> UserNamesByToken
{
get
{
return _cacheProvider.Get(CacheKey, () => _apiUsers.Where(u => u.IsActive).ToDictionary(u => u.Token, u => u));
}
}别忘了更新ToDictionary(u => u.Token, u => u)
然后更新您的IApiUserProvider接口
public interface IApiUserProvider
{
Dictionary<Guid, string> UserNamesByToken { get; }
ApiUser this[Guid token] { get; }
}在更新索引器之后
public string this[Guid token]
{
get { return UserNamesByToken.GetValueOrDefault(token); }
}如果这不起作用,请让我知道:)
https://stackoverflow.com/questions/33020136
复制相似问题