/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/VisualStudio/Core/Impl/CodeModel/AbstractCodeModelObject.cs
104 строки
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. #nullable disable using System; using System.Diagnostics; using System.Runtime.InteropServices; using EnvDTE; using Microsoft.CodeAnalysis.CodeGeneration; using Microsoft.CodeAnalysis.LanguageService; using Microsoft.VisualStudio.LanguageServices.Implementation.CodeModel.Interop; using Microsoft.VisualStudio.LanguageServices.Implementation.Interop; using Microsoft.VisualStudio.LanguageServices.Implementation.Utilities; using Microsoft.VisualStudio.Shell.Interop; namespace Microsoft.VisualStudio.LanguageServices.Implementation.CodeModel; /// <summary> /// This is the root class for all code model objects. It contains methods that /// are common to everything. /// </summary> public abstract partial class AbstractCodeModelObject : ApartmentSensitiveComObject { private CodeModelState _state; internal AbstractCodeModelObject(CodeModelState state) { Debug.Assert(state != null); _state = state; } protected bool IsZombied { get; private set; } internal CodeModelState State { get { if (IsZombied) { Debug.Fail("Cannot access " + this.GetType().FullName + " after it has been ShutDown!"); throw Exceptions.ThrowEUnexpected(); } return _state; } } internal ICodeGenerationService CodeGenerationService { get { return this.State.CodeGenerator; } } internal ICodeModelService CodeModelService { get { return this.State.CodeModelService; } } internal IServiceProvider ServiceProvider { get { return this.State.ServiceProvider; } } internal ISyntaxFactsService SyntaxFactsService { get { return this.State.SyntaxFactsService; } } internal VisualStudioWorkspace Workspace { get { return this.State.Workspace; } } internal virtual void Shutdown() { _state = null; IsZombied = true; } public DTE DTE { get { return (DTE)this.ServiceProvider.GetService(typeof(SDTE)); } } public string Language { get { return this.CodeModelService.Language; } } protected EnvDTE.CodeElements GetCollection<T>(object parentObject) { var parentInstance = ComAggregate.GetManagedObject<object>(parentObject); Debug.Assert(!Marshal.IsComObject(parentInstance), "We should have a pure managed object!"); if (parentInstance is ICodeElementContainer<T> container) { return container.GetCollection(); } throw Exceptions.ThrowEFail(); } }