【发布时间】:2019-04-11 11:35:46
【问题描述】:
我正在尝试获取 HttpRuntime.Cache 对象的到期日期,按照这个答案:
https://stackoverflow.com/a/350374/1778169
方法是:
private DateTime GetCacheUtcExpiryDateTime(string cacheKey)
{
object cacheEntry = Cache.GetType().GetMethod("Get", BindingFlags.Instance | BindingFlags.NonPublic).Invoke(Cache, new object[] { cacheKey, 1 });
PropertyInfo utcExpiresProperty = cacheEntry.GetType().GetProperty("UtcExpires", BindingFlags.NonPublic | BindingFlags.Instance);
DateTime utcExpiresValue = (DateTime)utcExpiresProperty.GetValue(cacheEntry, null);
return utcExpiresValue;
}
当我尝试使用上述方法时,第一行将无法编译:
object.GetType() 需要对象引用
如果我将 Cache.GetType() 替换为 HttpRuntime.Cache.GetType() 它会编译,但我会从这部分返回 null:
cacheType.GetMethod("Get", BindingFlags.Instance | BindingFlags.NonPublic).
我做错了什么?
我正在使用 .NET 4.5。 System.Web.Caching 是版本 4.0.0.0。
【问题讨论】:
标签: asp.net-mvc caching reflection