我将缓存方面与 ASP.NET 缓存一起使用。我需要根据 ReturnValue 创建条件。
我简化了我的问题。我在返回简单 POCO 对象的方法上使用 CacheResult 方面。
这是定义:
public class MyData
{
public string MyProperty { get; set; }
}
public class MyResponse
{
public int MyId { get; set; }
public MyData [] Result { get; set; }
}
我需要为缓存创建条件 - 仅当 MyResponse.MyData.Lenght 大于批处理限制时才缓存结果。
[CacheResult("AspNetCache", "'MyResponse.MyId=' + #id",
Condition = "MyResponse.Result.Length > #batchLimit")]
public MyResponse GetResponse(int id, int batchLimit)
{
Thread.Sleep(5000);
return new MyResponse
{
MyId = 1,
Result =
new MyData[]
{
new MyData {MyProperty = "A"}, new MyData {MyProperty = "B"},
new MyData {MyProperty = "C"},
}
};
}
我尝试了这个条件定义:
Condition = "MyResponse.Result.Length > #batchLimit"
我收到了这个错误:
无法为指定的上下文 [Sample.MyResponse] 解析“MyResponse”节点。
所以我尝试了第二个版本:
Condition = "'MyResponse.Result.Length' > #batchLimit"
完成错误:
Cannot compare instances of [System.String] and [System.Int32] because they cannot be coerced to the same type.
我谷歌它我可以使用 ReturnValue
这样的关键字:
Condition = "#ReturnValue != null"
但我不知道如何访问MyResponse.MyData.Length
.