Open tky753 opened 1 year ago
IRedisClient 是社区 PR 的,不完整
var sb = new StringBuilder(@"using System;
using System.Collections.Generic;
using System.IO;
namespace FreeRedis
{
public partial interface IRedisClient
{
List<Func<IInterceptor>> Interceptors { get; }
event EventHandler<ConnectedEventArgs> Connected;
event EventHandler<NoticeEventArgs> Notice;
event EventHandler<UnavailableEventArgs> Unavailable;
");
var methods = typeof(RedisClient).GetMethods().OrderBy(a =>
a.ReturnType.IsAssignableFrom(typeof(Task)) ||
a.ReturnType.IsGenericType && a.ReturnType.GetGenericTypeDefinition() == typeof(Task<>)).ToArray();
foreach (var method in methods)
{
var mstr = method.DisplayCsharp(false);
mstr = mstr.Replace("public ", "")
.Replace("virtual ", "")
.Replace("System.IO.", "")
.Replace("System.Object.", "object")
.Replace("System.", "")
.Replace("Threading.Tasks.", "")
.Replace("Collections.Generic.", "")
.Replace("FreeRedis.Internal.", "")
.Replace("FreeRedis.", "")
.Replace("Boolean", "bool")
.Replace("String", "string")
.Replace("Int32", "int")
.Replace("Int64", "long")
.Replace("Decimal", "decimal");
mstr = Regex.Replace(mstr, @"Nullable<(\w+)>", "$1?");
// sb.Append($@"
//{method.ReturnType.DisplayCsharp(false)} {method.Name}({string.Join(", ", method.GetParameters().Select(a => a.ParameterType.DisplayCsharp(false) + " " + a.Name))})");
sb.Append($@"
{mstr};");
}
sb.Append(@"
}
}");
string redisInterface = sb.ToString();
v1.1.1
IRedisClient
doesn't have async methods witch are implemnted inRedisClient
, it makesIRedisClient
a little 鸡肋.