提交 bec74603 编写于 作者: D Dustin Campbell

Make in process components internal

上级 235dda4b
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
namespace Roslyn.VisualStudio.Test.Utilities.InProcess namespace Roslyn.VisualStudio.Test.Utilities.InProcess
{ {
public class CSharpInteractiveWindow_InProc : InteractiveWindow_InProc internal class CSharpInteractiveWindow_InProc : InteractiveWindow_InProc
{ {
private const string ViewCommand = "View.C#Interactive"; private const string ViewCommand = "View.C#Interactive";
private const string WindowTitle = "C# Interactive"; private const string WindowTitle = "C# Interactive";
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
namespace Roslyn.VisualStudio.Test.Utilities.InProcess namespace Roslyn.VisualStudio.Test.Utilities.InProcess
{ {
public class Editor_InProc : InProcComponent internal class Editor_InProc : InProcComponent
{ {
private static readonly Guid IWpfTextViewId = new Guid("8C40265E-9FDB-4F54-A0FD-EBB72B7D0476"); private static readonly Guid IWpfTextViewId = new Guid("8C40265E-9FDB-4F54-A0FD-EBB72B7D0476");
......
...@@ -14,7 +14,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess ...@@ -14,7 +14,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess
/// Base class for all components that run inside of the Visual Studio process. Every in-proc component /// Base class for all components that run inside of the Visual Studio process. Every in-proc component
/// must provide a public, static, parameterless "Create" method. /// must provide a public, static, parameterless "Create" method.
/// </summary> /// </summary>
public abstract class InProcComponent : MarshalByRefObject internal abstract class InProcComponent : MarshalByRefObject
{ {
protected InProcComponent() { } protected InProcComponent() { }
......
...@@ -12,7 +12,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess ...@@ -12,7 +12,7 @@ namespace Roslyn.VisualStudio.Test.Utilities.InProcess
/// <remarks> /// <remarks>
/// This object exists in the Visual Studio host and is marhsalled across the process boundary. /// This object exists in the Visual Studio host and is marhsalled across the process boundary.
/// </remarks> /// </remarks>
public abstract class InteractiveWindow_InProc : InProcComponent internal abstract class InteractiveWindow_InProc : InProcComponent
{ {
private const string ResetCommand = "InteractiveConsole.Reset"; private const string ResetCommand = "InteractiveConsole.Reset";
private const string ReplSubmissionText = ". "; private const string ReplSubmissionText = ". ";
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
namespace Roslyn.VisualStudio.Test.Utilities.InProcess namespace Roslyn.VisualStudio.Test.Utilities.InProcess
{ {
public class SolutionExplorer_InProc : InProcComponent internal class SolutionExplorer_InProc : InProcComponent
{ {
private EnvDTE80.Solution2 _solution; private EnvDTE80.Solution2 _solution;
private string _fileName; private string _fileName;
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
namespace Roslyn.VisualStudio.Test.Utilities.InProcess namespace Roslyn.VisualStudio.Test.Utilities.InProcess
{ {
public class VisualStudioWorkspace_InProc : InProcComponent internal class VisualStudioWorkspace_InProc : InProcComponent
{ {
private static readonly Guid RoslynPackageId = new Guid("6cf2e545-6109-4730-8883-cf43d7aec3e1"); private static readonly Guid RoslynPackageId = new Guid("6cf2e545-6109-4730-8883-cf43d7aec3e1");
private readonly VisualStudioWorkspace _visualStudioWorkspace; private readonly VisualStudioWorkspace _visualStudioWorkspace;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
namespace Roslyn.VisualStudio.Test.Utilities.InProcess namespace Roslyn.VisualStudio.Test.Utilities.InProcess
{ {
public class VisualStudio_InProc : InProcComponent internal class VisualStudio_InProc : InProcComponent
{ {
private VisualStudio_InProc() { } private VisualStudio_InProc() { }
......
...@@ -4,11 +4,16 @@ ...@@ -4,11 +4,16 @@
namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess
{ {
public class CSharpInteractiveWindow_OutOfProc : InteractiveWindow_OutOfProc<CSharpInteractiveWindow_InProc> public class CSharpInteractiveWindow_OutOfProc : InteractiveWindow_OutOfProc
{ {
public CSharpInteractiveWindow_OutOfProc(VisualStudioInstance visualStudioInstance) public CSharpInteractiveWindow_OutOfProc(VisualStudioInstance visualStudioInstance)
: base(visualStudioInstance) : base(visualStudioInstance)
{ {
} }
internal override InteractiveWindow_InProc CreateInProcComponent(VisualStudioInstance visualStudioInstance)
{
return CreateInProcComponent<CSharpInteractiveWindow_InProc>(visualStudioInstance);
}
} }
} }
...@@ -10,33 +10,36 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess ...@@ -10,33 +10,36 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess
/// <summary> /// <summary>
/// Provides a means of interacting with the Visual Studio editor by remoting calls into Visual Studio. /// Provides a means of interacting with the Visual Studio editor by remoting calls into Visual Studio.
/// </summary> /// </summary>
public partial class Editor_OutOfProc : OutOfProcComponent<Editor_InProc> public partial class Editor_OutOfProc : OutOfProcComponent
{ {
private readonly Editor_InProc _inProc;
internal Editor_OutOfProc(VisualStudioInstance visualStudioInstance) internal Editor_OutOfProc(VisualStudioInstance visualStudioInstance)
: base(visualStudioInstance) : base(visualStudioInstance)
{ {
this._inProc = CreateInProcComponent<Editor_InProc>(visualStudioInstance);
} }
public void Activate() => InProc.Activate(); public void Activate() => _inProc.Activate();
public string GetText() => InProc.GetText(); public string GetText() => _inProc.GetText();
public void SetText(string value) => InProc.SetText(value); public void SetText(string value) => _inProc.SetText(value);
public string GetCurrentLineText() => InProc.GetCurrentLineText(); public string GetCurrentLineText() => _inProc.GetCurrentLineText();
public int GetCaretPosition() => InProc.GetCaretPosition(); public int GetCaretPosition() => _inProc.GetCaretPosition();
public string GetLineTextBeforeCaret() => InProc.GetLineTextBeforeCaret(); public string GetLineTextBeforeCaret() => _inProc.GetLineTextBeforeCaret();
public string GetLineTextAfterCaret() => InProc.GetLineTextAfterCaret(); public string GetLineTextAfterCaret() => _inProc.GetLineTextAfterCaret();
public void MoveCaret(int position) => InProc.MoveCaret(position); public void MoveCaret(int position) => _inProc.MoveCaret(position);
public string[] GetCompletionItems() => InProc.GetCompletionItems(); public string[] GetCompletionItems() => _inProc.GetCompletionItems();
public string GetCurrentCompletionItem() => InProc.GetCurrentCompletionItem(); public string GetCurrentCompletionItem() => _inProc.GetCurrentCompletionItem();
public bool IsCompletionActive() => InProc.IsCompletionActive(); public bool IsCompletionActive() => _inProc.IsCompletionActive();
public Signature[] GetSignatures() => InProc.GetSignatures(); public Signature[] GetSignatures() => _inProc.GetSignatures();
public Signature GetCurrentSignature() => InProc.GetCurrentSignature(); public Signature GetCurrentSignature() => _inProc.GetCurrentSignature();
public bool IsCaretOnScreen() => InProc.IsCaretOnScreen(); public bool IsCaretOnScreen() => _inProc.IsCaretOnScreen();
public void SendKeys(params object[] keys) public void SendKeys(params object[] keys)
{ {
......
...@@ -7,17 +7,21 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess ...@@ -7,17 +7,21 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess
/// <summary> /// <summary>
/// Provides a means of interacting with the interactive window in the Visual Studio host. /// Provides a means of interacting with the interactive window in the Visual Studio host.
/// </summary> /// </summary>
public abstract class InteractiveWindow_OutOfProc<TInProcComponent> : OutOfProcComponent<TInProcComponent> public abstract class InteractiveWindow_OutOfProc : OutOfProcComponent
where TInProcComponent : InteractiveWindow_InProc
{ {
private readonly InteractiveWindow_InProc _inProc;
internal InteractiveWindow_OutOfProc(VisualStudioInstance visualStudioInstance) internal InteractiveWindow_OutOfProc(VisualStudioInstance visualStudioInstance)
: base (visualStudioInstance) : base (visualStudioInstance)
{ {
_inProc = CreateInProcComponent(visualStudioInstance);
} }
internal abstract InteractiveWindow_InProc CreateInProcComponent(VisualStudioInstance visualStudioInstance);
public void Initialize() public void Initialize()
{ {
InProc.Initialize(); _inProc.Initialize();
} }
/// <summary> /// <summary>
...@@ -25,12 +29,12 @@ public void Initialize() ...@@ -25,12 +29,12 @@ public void Initialize()
/// </summary> /// </summary>
public string GetLastReplOutput() public string GetLastReplOutput()
{ {
return InProc.GetLastReplOutput(); return _inProc.GetLastReplOutput();
} }
public string GetReplText() public string GetReplText()
{ {
return InProc.GetReplText(); return _inProc.GetReplText();
} }
/// <summary> /// <summary>
...@@ -38,32 +42,32 @@ public string GetReplText() ...@@ -38,32 +42,32 @@ public string GetReplText()
/// </summary> /// </summary>
public string GetReplTextWithoutPrompt() public string GetReplTextWithoutPrompt()
{ {
return InProc.GetReplTextWithoutPrompt(); return _inProc.GetReplTextWithoutPrompt();
} }
public void ShowWindow(bool waitForPrompt = true) public void ShowWindow(bool waitForPrompt = true)
{ {
InProc.ShowWindow(waitForPrompt); _inProc.ShowWindow(waitForPrompt);
} }
public void Reset(bool waitForPrompt = true) public void Reset(bool waitForPrompt = true)
{ {
InProc.Reset(waitForPrompt); _inProc.Reset(waitForPrompt);
} }
public void SubmitText(string text, bool waitForPrompt = true) public void SubmitText(string text, bool waitForPrompt = true)
{ {
InProc.SubmitText(text, waitForPrompt); _inProc.SubmitText(text, waitForPrompt);
} }
public void WaitForReplOutput(string outputText) public void WaitForReplOutput(string outputText)
{ {
InProc.WaitForReplOutput(outputText); _inProc.WaitForReplOutput(outputText);
} }
public void CleanUpInteractiveWindow() public void CleanUpInteractiveWindow()
{ {
InProc.CloseWindow(); _inProc.CloseWindow();
} }
} }
} }
...@@ -7,23 +7,20 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess ...@@ -7,23 +7,20 @@ namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess
/// <summary> /// <summary>
/// Base class for all components that run outside of the Visual Studio process. /// Base class for all components that run outside of the Visual Studio process.
/// </summary> /// </summary>
public abstract class OutOfProcComponent<TInProcComponent> public abstract class OutOfProcComponent
where TInProcComponent : InProcComponent
{ {
protected readonly VisualStudioInstance VisualStudioInstance; protected readonly VisualStudioInstance VisualStudioInstance;
protected readonly TInProcComponent InProc;
protected OutOfProcComponent(VisualStudioInstance visualStudioInstance) protected OutOfProcComponent(VisualStudioInstance visualStudioInstance)
{ {
VisualStudioInstance = visualStudioInstance; VisualStudioInstance = visualStudioInstance;
InProc = CreateInProcComponent();
} }
private TInProcComponent CreateInProcComponent() internal static TInProcComponent CreateInProcComponent<TInProcComponent>(VisualStudioInstance visualStudioInstance)
where TInProcComponent : InProcComponent
{ {
// Create MarshalByRefObject that can be used to execute code in the VS process. // Create MarshalByRefObject that can be used to execute code in the VS process.
return VisualStudioInstance.ExecuteInHostProcess<TInProcComponent>( return visualStudioInstance.ExecuteInHostProcess<TInProcComponent>(
type: typeof(TInProcComponent), type: typeof(TInProcComponent),
methodName: "Create"); methodName: "Create");
} }
......
...@@ -4,36 +4,42 @@ ...@@ -4,36 +4,42 @@
namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess
{ {
public class SolutionExplorer_OutOfProc : OutOfProcComponent<SolutionExplorer_InProc> public class SolutionExplorer_OutOfProc : OutOfProcComponent
{ {
private readonly SolutionExplorer_InProc _inProc;
public SolutionExplorer_OutOfProc(VisualStudioInstance visualStudioInstance) public SolutionExplorer_OutOfProc(VisualStudioInstance visualStudioInstance)
: base(visualStudioInstance) : base(visualStudioInstance)
{ {
this._inProc = CreateInProcComponent<SolutionExplorer_InProc>(visualStudioInstance);
} }
public void CloseSolution(bool saveFirst = false) => InProc.CloseSolution(saveFirst); public void CloseSolution(bool saveFirst = false)
{
_inProc.CloseSolution(saveFirst);
}
/// <summary> /// <summary>
/// Creates and loads a new solution in the host process, optionally saving the existing solution if one exists. /// Creates and loads a new solution in the host process, optionally saving the existing solution if one exists.
/// </summary> /// </summary>
public void CreateSolution(string solutionName, bool saveExistingSolutionIfExists = false) public void CreateSolution(string solutionName, bool saveExistingSolutionIfExists = false)
{ {
InProc.CreateSolution(solutionName, saveExistingSolutionIfExists); _inProc.CreateSolution(solutionName, saveExistingSolutionIfExists);
} }
public void OpenSolution(string path, bool saveExistingSolutionIfExists = false) public void OpenSolution(string path, bool saveExistingSolutionIfExists = false)
{ {
InProc.OpenSolution(path, saveExistingSolutionIfExists); _inProc.OpenSolution(path, saveExistingSolutionIfExists);
} }
public void AddProject(string projectName, string projectTemplate, string languageName) public void AddProject(string projectName, string projectTemplate, string languageName)
{ {
InProc.AddProject(projectName, projectTemplate, languageName); _inProc.AddProject(projectName, projectTemplate, languageName);
} }
public void CleanUpOpenSolution() public void CleanUpOpenSolution()
{ {
InProc.CleanUpOpenSolution(); _inProc.CleanUpOpenSolution();
} }
} }
} }
...@@ -4,54 +4,57 @@ ...@@ -4,54 +4,57 @@
namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess namespace Roslyn.VisualStudio.Test.Utilities.OutOfProcess
{ {
public class VisualStudioWorkspace_OutOfProc : OutOfProcComponent<VisualStudioWorkspace_InProc> public class VisualStudioWorkspace_OutOfProc : OutOfProcComponent
{ {
private readonly VisualStudioWorkspace_InProc _inProc;
internal VisualStudioWorkspace_OutOfProc(VisualStudioInstance visualStudioInstance) internal VisualStudioWorkspace_OutOfProc(VisualStudioInstance visualStudioInstance)
: base(visualStudioInstance) : base(visualStudioInstance)
{ {
this._inProc = CreateInProcComponent<VisualStudioWorkspace_InProc>(visualStudioInstance);
} }
public bool UseSuggestionMode public bool UseSuggestionMode
{ {
get get
{ {
return InProc.UseSuggestionMode; return _inProc.UseSuggestionMode;
} }
set set
{ {
InProc.UseSuggestionMode = value; _inProc.UseSuggestionMode = value;
} }
} }
public bool IsPrettyListingOn(string languageName) public bool IsPrettyListingOn(string languageName)
{ {
return InProc.IsPrettyListingOn(languageName); return _inProc.IsPrettyListingOn(languageName);
} }
public void SetPrettyListing(string languageName, bool value) public void SetPrettyListing(string languageName, bool value)
{ {
InProc.SetPrettyListing(languageName, value); _inProc.SetPrettyListing(languageName, value);
} }
public void WaitForAsyncOperations(string featuresToWaitFor, bool waitForWorkspaceFirst = true) public void WaitForAsyncOperations(string featuresToWaitFor, bool waitForWorkspaceFirst = true)
{ {
InProc.WaitForAsyncOperations(featuresToWaitFor, waitForWorkspaceFirst); _inProc.WaitForAsyncOperations(featuresToWaitFor, waitForWorkspaceFirst);
} }
public void WaitForAllAsyncOperations() public void WaitForAllAsyncOperations()
{ {
InProc.WaitForAllAsyncOperations(); _inProc.WaitForAllAsyncOperations();
} }
public void CleanUpWorkspace() public void CleanUpWorkspace()
{ {
InProc.CleanUpWorkspace(); _inProc.CleanUpWorkspace();
} }
public void CleanUpWaitingService() public void CleanUpWaitingService()
{ {
InProc.CleanUpWaitingService(); _inProc.CleanUpWaitingService();
} }
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册