提交 b33f72d2 编写于 作者: J Jason Malinowski

Allow IDocumentOptionsProviderFactories to optionally return providers

This renames Create to TryCreate.
上级 6a5be42f
......@@ -31,7 +31,7 @@ class EditorConfigDocumentOptionsProviderFactory : IDocumentOptionsProviderFacto
_asynchronousOperationListenerProvider = asynchronousOperationListenerProvider;
}
public IDocumentOptionsProvider Create(Workspace workspace)
public IDocumentOptionsProvider TryCreate(Workspace workspace)
{
ICodingConventionsManager codingConventionsManager;
......
......@@ -42,7 +42,12 @@ internal class RoslynVisualStudioWorkspace : VisualStudioWorkspaceImpl
foreach (var providerFactory in documentOptionsProviderFactories)
{
Services.GetRequiredService<IOptionService>().RegisterDocumentOptionsProvider(providerFactory.Create(this));
var optionsProvider = providerFactory.TryCreate(this);
if (optionsProvider != null)
{
Services.GetRequiredService<IOptionService>().RegisterDocumentOptionsProvider(optionsProvider);
}
}
}
......
......@@ -8,6 +8,6 @@
/// </remarks>
interface IDocumentOptionsProviderFactory
{
IDocumentOptionsProvider Create(Workspace workspace);
IDocumentOptionsProvider TryCreate(Workspace workspace);
}
}
......@@ -125,6 +125,11 @@ public OptionSet GetOptions()
public void RegisterDocumentOptionsProvider(IDocumentOptionsProvider documentOptionsProvider)
{
if (documentOptionsProvider == null)
{
throw new ArgumentNullException(nameof(documentOptionsProvider));
}
lock (_gate)
{
_documentOptionsProviders = _documentOptionsProviders.Add(documentOptionsProvider);
......
......@@ -31,7 +31,12 @@ public RemoteWorkspace()
foreach (var providerFactory in exportProvider.GetExports<IDocumentOptionsProviderFactory>())
{
Services.GetRequiredService<IOptionService>().RegisterDocumentOptionsProvider(providerFactory.Value.Create(this));
var optionsProvider = providerFactory.Value.TryCreate(this);
if (optionsProvider != null)
{
Services.GetRequiredService<IOptionService>().RegisterDocumentOptionsProvider(optionsProvider);
}
}
Options = Options.WithChangedOption(CacheOptions.RecoverableTreeLengthThreshold, 0);
......
......@@ -36,7 +36,12 @@ public IWorkspaceService CreateService(HostWorkspaceServices workspaceServices)
foreach (var factory in _documentOptionsProviderFactories)
{
service.RegisterDocumentOptionsProvider(factory.Create(workspaceServices.Workspace));
var documentOptionsProvider = factory.TryCreate(workspaceServices.Workspace);
if (documentOptionsProvider != null)
{
service.RegisterDocumentOptionsProvider(documentOptionsProvider);
}
}
return service;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册