public TypeHandlerExtensionData() { var handlerTypeDescriptorProvider = new HandlerTypeDescriptorProvider( new[] { typeof(HandlerTypeDescriptorProvider).Assembly, typeof(DebugAdapterRpcOptionsBase <>).Assembly, typeof(DebugAdapterClient).Assembly, typeof(DebugAdapterServer).Assembly, typeof(DapReceiver).Assembly, typeof(DebugAdapterProtocolTestBase).Assembly } ); foreach (var type in typeof(CompletionsArguments).Assembly.ExportedTypes .Where(z => z.IsInterface && typeof(IJsonRpcHandler).IsAssignableFrom(z))) { if (type.IsGenericTypeDefinition && !MethodAttribute.AllFrom(type).Any()) { continue; } if (type == typeof(IProgressStartHandler) || type == typeof(IProgressUpdateHandler) || type == typeof(IProgressEndHandler)) { continue; } var descriptor = handlerTypeDescriptorProvider.GetHandlerTypeDescriptor(type) !; Add( descriptor, GetOnMethodName(descriptor), GetSendMethodName(descriptor), GetExtensionClass(descriptor), GetExtensionClassName(descriptor).Substring(GetExtensionClassName(descriptor).LastIndexOf('.') + 1) ); } }
internal LspHandlerTypeDescriptorProvider(IEnumerable <Assembly> assemblies) { KnownHandlers = HandlerTypeDescriptorProvider .GetDescriptors(assemblies) .Select(x => new LspHandlerTypeDescriptor(x.HandlerType) as ILspHandlerTypeDescriptor) .ToLookup(x => x.Method, x => x, StringComparer.Ordinal); }
public TypeHandlerData() { var handlerTypeDescriptorProvider = new HandlerTypeDescriptorProvider( new[] { typeof(HandlerTypeDescriptorProvider).Assembly, typeof(DebugAdapterRpcOptionsBase <>).Assembly, typeof(DebugAdapterClient).Assembly, typeof(DebugAdapterServer).Assembly, typeof(DapReceiver).Assembly, typeof(DebugAdapterProtocolTestBase).Assembly } ); foreach (var type in typeof(CompletionsArguments).Assembly.ExportedTypes.Where( z => z.IsInterface && typeof(IJsonRpcHandler).IsAssignableFrom(z) )) { if (type.IsGenericTypeDefinition && !MethodAttribute.AllFrom(type).Any()) { continue; } if (type == typeof(IProgressStartHandler) || type == typeof(IProgressUpdateHandler) || type == typeof(IProgressEndHandler)) { continue; } Add(handlerTypeDescriptorProvider.GetHandlerTypeDescriptor(type) !); } }