小编Who*_*ver的帖子

访问MemoryCache是​​否创建副本?

我有这样的缓存服务:

public interface ICacheService {
    T Get<T>(string cacheID, Func<T> getItemCallback, int cacheMinutes = 5) where T : class;
}

public class MemoryCacheService : ICacheService {
    public T Get<T>(string cacheId, Func<T> getItemCallback, int cacheMinutes = 5) where T : class {
        T item = MemoryCache.Default.Get(cacheId) as T;
        if (item == null) {
            item = getItemCallback();
            MemoryCache.Default.Add(cacheId, item,
                new CacheItemPolicy {AbsoluteExpiration = DateTime.Now.AddMinutes(cacheMinutes)});
        }
        return item;
    }
}
Run Code Online (Sandbox Code Playgroud)

并检索如下:

var result = _cache.Get("mylist", () => _database.Fetch<MyList>().AsQueryable(), 600);
Run Code Online (Sandbox Code Playgroud)

该列表很大,并且在每个击键类型提前下拉列表中经常访问.查询条件也是动态的,比如

if (this) result = …
Run Code Online (Sandbox Code Playgroud)

c# linq memorycache

9
推荐指数
2
解决办法
2738
查看次数

有没有办法在 aspnetcore 配置中转义 appsetting.json 字典键中的冒号?

我在 appsetting.json 中有这个提供程序字典

  "AppSettings": {
      "Providers": {
         "http://localhost:5001": "Provider1",
         "http://localhost:5002": "Provider2"
      },
      "ArrayWorks": [
         "http://localhost:5001",
         "http://localhost:5002"
      ],
      "SoDoesColonInDictionaryValue": {
         "Provider1": "http://localhost:5001",
         "Provider2": "http://localhost:5002"
      }
   }
Run Code Online (Sandbox Code Playgroud)

下面抛出异常,因为字典键中有冒号。

Configuration.GetSection("AppSettings").Get<AppSettings>()

但是,冒号可以很好地用作字典值或数组,但不能用作字典键。我读到冒号在配置中具有特殊含义,但似乎没有办法逃脱。为什么?

编辑:

public class AppSettings
{
    public string ApplicationName { get; set; }
    public IDictionary<string, string> Providers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

调试 Configuration.GetSection("AppSettings") 时,您会得到这个

Key    AppSettings:Providers:http://localhost:5000
Value  Provider1
Run Code Online (Sandbox Code Playgroud)

本来是这样的

Key     AppSettings:Providers:http_//localhost_5000
Run Code Online (Sandbox Code Playgroud)

但似乎没有办法控制配置如何对待 :::

configuration appsettings asp.net-core

8
推荐指数
1
解决办法
3501
查看次数

使用 MediatR 时让一个处理程序调用另一个处理程序是否可以?

或者这被认为是不好的做法还是什么?

我有一个通知触发 4-5 个处理程序,这些处理程序又调用数据库来检索数据。每个这些调用也可以单独调用,因此它们本身就是请求/处理程序。

谢谢。

c# oop cqrs mediatr

5
推荐指数
1
解决办法
3497
查看次数

AspnetCore RazorPage 返回原始字符串?

RazorPage 通常返回 void、Task、IActionResult,例如

public Task OnGet() { }
public Task<IActionResult> OnGet() { }
Run Code Online (Sandbox Code Playgroud)

也有可能让处理程序返回 Json,例如

public Task<JsonResult> OnGetAlso() { }
Run Code Online (Sandbox Code Playgroud)

但是在某些情况下,我希望处理程序返回原始字符串,但我找不到一种简单的方法来做到这一点。

public Task<string> OnGetSomeString() 
{ return "something"; }
Run Code Online (Sandbox Code Playgroud)

但我总是收到错误不支持的处理程序方法返回类型。这可能吗?谢谢

asp.net-core razor-pages

5
推荐指数
1
解决办法
2181
查看次数