阅读量:0
在C#中使用Attribute来实现缓存功能可以通过自定义一个Attribute类来实现。以下是一个简单的例子:
using System; [AttributeUsage(AttributeTargets.Method)] public class CacheAttribute : Attribute { public int CacheDuration { get; set; } public CacheAttribute(int duration) { CacheDuration = duration; } } public class MyService { [Cache(60)] // 缓存60秒 public string GetData() { // 从缓存中获取数据,如果缓存过期则重新获取数据并存入缓存 return "Cached data"; } } public class CacheManager { public static object GetCachedData(Func<object> method, CacheAttribute attribute) { // 检查缓存是否过期 // 如果过期则调用方法获取数据并存入缓存 return method(); } } class Program { static void Main(string[] args) { MyService myService = new MyService(); var method = typeof(MyService).GetMethod("GetData"); var attribute = (CacheAttribute)Attribute.GetCustomAttribute(method, typeof(CacheAttribute)); object data = CacheManager.GetCachedData(() => myService.GetData(), attribute); Console.WriteLine(data); } }
在上面的例子中,我们定义了一个CacheAttribute
来标记需要缓存的方法,并在MyService
类中使用了该Attribute。在CacheManager
类中,我们定义了一个静态方法GetCachedData
来处理缓存逻辑。在Program
类中,我们获取了GetData
方法上的CacheAttribute
,然后通过CacheManager
来获取数据并输出。