47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.Text;
 | |
| using System.Text.RegularExpressions;
 | |
| 
 | |
| namespace Core.Blueprint.DAL.Redis.Helpers
 | |
| {
 | |
|     public static class CacheKeyHelper
 | |
|     {
 | |
|         public static string GenerateCacheKey(object instance, string methodName, params object[] parameters)
 | |
|         {
 | |
|             var className = instance.GetType().Name;
 | |
|             var keyBuilder = new StringBuilder($"{className}.{methodName}");
 | |
| 
 | |
|             foreach (var param in parameters)
 | |
|             {
 | |
|                 string normalizedParam = NormalizeParameter(param);
 | |
|                 keyBuilder.Append($".{normalizedParam}");
 | |
|             }
 | |
| 
 | |
|             return keyBuilder.ToString();
 | |
|         }
 | |
| 
 | |
|         private static string NormalizeParameter(object param)
 | |
|         {
 | |
|             if (param == null)
 | |
|             {
 | |
|                 return "null";
 | |
|             }
 | |
| 
 | |
|             string paramString;
 | |
| 
 | |
|             if (param is DateTime dateTime)
 | |
|             {
 | |
|                 paramString = dateTime.ToString("yyyyMMdd");
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 paramString = param.ToString();
 | |
|             }
 | |
| 
 | |
|             // Replace special characters with an underscore
 | |
|             string normalizedParam = Regex.Replace(paramString, @"[^a-zA-Z0-9]", "_");
 | |
| 
 | |
|             return normalizedParam;
 | |
|         }
 | |
|     }
 | |
| }
 | 
