// 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");
}
}
}