// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using Roslyn.VisualStudio.Test.Utilities.InProcess; namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess { /// /// Base class for all components that run outside of the Visual Studio process. /// public abstract class OutOfProcComponent { protected readonly VisualStudioInstance VisualStudioInstance; protected OutOfProcComponent(VisualStudioInstance visualStudioInstance) { VisualStudioInstance = visualStudioInstance; } internal static TInProcComponent CreateInProcComponent(VisualStudioInstance visualStudioInstance) where TInProcComponent : InProcComponent { // Create MarshalByRefObject that can be used to execute code in the VS process. return visualStudioInstance.ExecuteInHostProcess( type: typeof(TInProcComponent), methodName: "Create"); } } }