prevent disposed service provider
This commit is contained in:
parent
3458e9f70f
commit
8d33c3619c
|
|
@ -54,16 +54,23 @@ public class SideCarAttribute : AsyncMoAttribute
|
||||||
|
|
||||||
private (IConversationSideCar?, MethodInfo?) GetSideCarMethod(IServiceProvider serviceProvider, string methodName, Type retType, object[] args)
|
private (IConversationSideCar?, MethodInfo?) GetSideCarMethod(IServiceProvider serviceProvider, string methodName, Type retType, object[] args)
|
||||||
{
|
{
|
||||||
var sidecar = serviceProvider.GetService<IConversationSideCar>();
|
try
|
||||||
var argTypes = args.Select(x => x.GetType()).ToArray();
|
{
|
||||||
var sidecarMethod = sidecar?.GetType()?.GetMethods(BindingFlags.Public | BindingFlags.Instance)
|
var sidecar = serviceProvider.GetService<IConversationSideCar>();
|
||||||
.FirstOrDefault(x => x.Name == methodName
|
var argTypes = args.Select(x => x.GetType()).ToArray();
|
||||||
&& x.ReturnType == retType
|
var sidecarMethod = sidecar?.GetType()?.GetMethods(BindingFlags.Public | BindingFlags.Instance)
|
||||||
&& x.GetParameters().Length == argTypes.Length
|
.FirstOrDefault(x => x.Name == methodName
|
||||||
&& x.GetParameters().Select(p => p.ParameterType)
|
&& x.ReturnType == retType
|
||||||
.Zip(argTypes, (paramType, argType) => paramType.IsAssignableFrom(argType)).All(y => y));
|
&& x.GetParameters().Length == argTypes.Length
|
||||||
|
&& x.GetParameters().Select(p => p.ParameterType)
|
||||||
|
.Zip(argTypes, (paramType, argType) => paramType.IsAssignableFrom(argType)).All(y => y));
|
||||||
|
|
||||||
return (sidecar, sidecarMethod);
|
return (sidecar, sidecarMethod);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return (null, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<(bool, object?)> CallAsyncMethod(IConversationSideCar instance, MethodInfo method, Type retType, object[] args)
|
private async Task<(bool, object?)> CallAsyncMethod(IConversationSideCar instance, MethodInfo method, Type retType, object[] args)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue