public ICoconaCompletionOnTheFlyCandidatesProvider CreateOnTheFlyProvider(CoconaCompletionCandidatesMetadata metadata) { if (!(typeof(ICoconaCompletionOnTheFlyCandidatesProvider).IsAssignableFrom(metadata.CandidatesProviderType))) { throw new InvalidOperationException($"Type '{metadata.CandidatesProviderType.FullName}' doesn't implement ICoconaCompletionOnTheFlyCandidatesProvider."); } return((ICoconaCompletionOnTheFlyCandidatesProvider)_activator.GetServiceOrCreateInstance(_serviceProvider, metadata.CandidatesProviderType !) !); }
private StaticCompletionCandidates GetStaticCandidatesCore(CoconaCompletionCandidatesMetadata metadata) { if (metadata.CandidateType == CompletionCandidateType.Provider && typeof(ICoconaCompletionOnTheFlyCandidatesProvider).IsAssignableFrom(metadata.CandidatesProviderType)) { return(new StaticCompletionCandidates(metadata.CandidatesProviderType !)); } else { var candidatesProvider = _completionCandidatesProviderFactory.CreateStaticProvider(metadata); var result = candidatesProvider.GetCandidates(metadata); return(new StaticCompletionCandidates(result)); } }