/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/VisualStudio/Core/Impl/Options/AbstractAutomationObject.cs
83 строки
3 KB
Cyrus Najmabadi
Use file scoped namespaces. (#77854)
27 мар 2025, 09:55
Не верифицирован
27 мар 2025, 09:55
98d41b8
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Xml.Linq; using Microsoft.CodeAnalysis.CodeStyle; using Microsoft.CodeAnalysis.Options; namespace Microsoft.VisualStudio.LanguageServices.Implementation.Options; public abstract class AbstractAutomationObject { private readonly ILegacyGlobalOptionService _legacyGlobalOptions; private readonly string _languageName; internal AbstractAutomationObject(ILegacyGlobalOptionService legacyGlobalOptions, string languageName) => (_legacyGlobalOptions, _languageName) = (legacyGlobalOptions, languageName); private protected T GetOption<T>(PerLanguageOption2<T> option) => _legacyGlobalOptions.GlobalOptions.GetOption(option, _languageName); private protected void SetOption<T>(PerLanguageOption2<T> option, T value) { _legacyGlobalOptions.GlobalOptions.SetGlobalOption(option, _languageName, value); // May be updating an internally-defined public option stored in solution snapshots: _legacyGlobalOptions.UpdateRegisteredWorkspaces(); } private protected T GetOption<T>(Option2<T> option) => _legacyGlobalOptions.GlobalOptions.GetOption(option); private protected void SetOption<T>(Option2<T> option, T value) { _legacyGlobalOptions.GlobalOptions.SetGlobalOption(option, value); // May be updating an internally-defined public option stored in solution snapshots: _legacyGlobalOptions.UpdateRegisteredWorkspaces(); } private protected int GetBooleanOption(PerLanguageOption2<bool?> key) => NullableBooleanToInteger(GetOption(key)); private protected void SetBooleanOption(PerLanguageOption2<bool?> key, int value) => SetOption(key, IntegerToNullableBoolean(value)); private protected int GetBooleanOption(Option2<bool?> key) => NullableBooleanToInteger(GetOption(key)); private protected void SetBooleanOption(Option2<bool?> key, int value) => SetOption(key, IntegerToNullableBoolean(value)); private protected string GetXmlOption<T>(Option2<CodeStyleOption2<T>> option) => GetOption(option).ToXElement().ToString(); private protected string GetXmlOption<T>(PerLanguageOption2<CodeStyleOption2<T>> option) => GetOption(option).ToXElement().ToString(); private protected void SetXmlOption<T>(Option2<CodeStyleOption2<T>> option, string value) { var convertedValue = CodeStyleOption2<T>.FromXElement(XElement.Parse(value)); SetOption(option, convertedValue); } private protected void SetXmlOption<T>(PerLanguageOption2<CodeStyleOption2<T>> option, string value) { var convertedValue = CodeStyleOption2<T>.FromXElement(XElement.Parse(value)); SetOption(option, convertedValue); } private static int NullableBooleanToInteger(bool? value) { if (!value.HasValue) { return -1; } return value.Value ? 1 : 0; } private static bool? IntegerToNullableBoolean(int value) => (value < 0) ? null : (value > 0); }