Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 8d7f940

Browse files
committed
Move IServiceProvider extension methods from ICSharpCode.Core to ICSharpCode.SharpDevelop.
1 parent a3f61c8 commit 8d7f940

24 files changed

Lines changed: 74 additions & 58 deletions

File tree

src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/ChangeMarkerMargin.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,16 @@
88
using System.Windows.Controls.Primitives;
99
using System.Windows.Input;
1010
using System.Windows.Media;
11+
1112
using ICSharpCode.AvalonEdit.Document;
1213
using ICSharpCode.AvalonEdit.Editing;
1314
using ICSharpCode.AvalonEdit.Highlighting;
1415
using ICSharpCode.AvalonEdit.Rendering;
1516
using ICSharpCode.Core;
17+
using ICSharpCode.NRefactory.Editor;
18+
using ICSharpCode.SharpDevelop;
1619
using ICSharpCode.SharpDevelop.Editor;
1720
using ICSharpCode.SharpDevelop.Widgets.MyersDiff;
18-
using ICSharpCode.NRefactory.Editor;
1921

2022
namespace ICSharpCode.AvalonEdit.AddIn
2123
{

src/Main/Base/Project/Src/Util/ExtensionMethods.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,38 @@ public static int IndexOfAny(this string haystack, IEnumerable<string> needles,
677677
}
678678
#endregion
679679

680+
#region Service Provider Extensions
681+
/// <summary>
682+
/// Retrieves the service of type <c>T</c> from the provider.
683+
/// If the service cannot be found, this method returns <c>null</c>.
684+
/// </summary>
685+
public static T GetService<T>(this IServiceProvider provider) where T : class
686+
{
687+
return (T)provider.GetService(typeof(T));
688+
}
689+
690+
/// <summary>
691+
/// Retrieves the service of type <c>T</c> from the provider.
692+
/// If the service cannot be found, a <see cref="ServiceNotFoundException"/> will be thrown.
693+
/// </summary>
694+
public static T GetRequiredService<T>(this IServiceProvider provider) where T : class
695+
{
696+
return (T)GetRequiredService(provider, typeof(T));
697+
}
698+
699+
/// <summary>
700+
/// Retrieves the service of type <paramref name="serviceType"/> from the provider.
701+
/// If the service cannot be found, a <see cref="ServiceNotFoundException"/> will be thrown.
702+
/// </summary>
703+
public static object GetRequiredService(this IServiceProvider provider, Type serviceType)
704+
{
705+
object service = provider.GetService(serviceType);
706+
if (service == null)
707+
throw new ServiceNotFoundException(serviceType);
708+
return service;
709+
}
710+
#endregion
711+
680712
/// <summary>
681713
/// Creates a new image for the image source.
682714
/// </summary>

src/Main/Core/Project/Src/AddInTree/AddIn/AddIn.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public Type FindType(string className)
6565
LoggingService.Error("Cannot find class: " + className);
6666
} else {
6767
hasShownErrorMessage = true;
68-
var messageService = ServiceSingleton.ServiceProvider.GetRequiredService<IMessageService>();
68+
var messageService = ServiceSingleton.GetRequiredService<IMessageService>();
6969
messageService.ShowError("Cannot find class: " + className + "\nFuture missing objects will not cause an error message.");
7070
}
7171
return null;

src/Main/Core/Project/Src/AddInTree/AddIn/Condition.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public Condition(string name, Properties properties)
5252
public bool IsValid(object owner)
5353
{
5454
try {
55-
var addInTree = ServiceSingleton.ServiceProvider.GetRequiredService<IAddInTree>();
55+
var addInTree = ServiceSingleton.GetRequiredService<IAddInTree>();
5656
return addInTree.ConditionEvaluators[name].IsValid(owner, this);
5757
} catch (KeyNotFoundException) {
5858
throw new CoreException("Condition evaluator " + name + " not found!");

src/Main/Core/Project/Src/AddInTree/AddIn/Runtime.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ protected virtual Assembly LoadAssemblyFrom(string assemblyFile)
232232

233233
protected virtual void ShowError(string message)
234234
{
235-
ServiceSingleton.ServiceProvider.GetRequiredService<IMessageService>().ShowError(message);
235+
ServiceSingleton.GetRequiredService<IMessageService>().ShowError(message);
236236
}
237237
}
238238
}

src/Main/Core/Project/Src/AddInTree/AddInManager.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public static string ConfigurationFileName {
113113
}
114114

115115
static AddInTreeImpl AddInTree {
116-
get { return (AddInTreeImpl)ServiceSingleton.ServiceProvider.GetRequiredService(typeof(IAddInTree)); }
116+
get { return (AddInTreeImpl)ServiceSingleton.GetRequiredService<IAddInTree>(); }
117117
}
118118

119119
/// <summary>
@@ -188,7 +188,7 @@ static bool UninstallAddIn(List<string> disabled, string addInName, string targe
188188
Directory.Delete(targetDir, true);
189189
} catch (Exception ex) {
190190
disabled.Add(addInName);
191-
var messageService = ServiceSingleton.ServiceProvider.GetRequiredService<IMessageService>();
191+
var messageService = ServiceSingleton.GetRequiredService<IMessageService>();
192192
messageService.ShowError("Error removing " + addInName + ":\n" +
193193
ex.Message + "\nThe AddIn will be " +
194194
"removed on the next start of " + messageService.ProductName +

src/Main/Core/Project/Src/AddInTree/AddInTree.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ public static class AddInTree
1818
{
1919
public static List<T> BuildItems<T>(string path, object caller, bool throwOnNotFound = true)
2020
{
21-
var addInTree = ServiceSingleton.ServiceProvider.GetRequiredService<IAddInTree>();
21+
var addInTree = ServiceSingleton.GetRequiredService<IAddInTree>();
2222
return addInTree.BuildItems<T>(path, caller, throwOnNotFound).ToList();
2323
}
2424

2525
public static AddInTreeNode GetTreeNode(string path, bool throwOnNotFound = true)
2626
{
27-
var addInTree = ServiceSingleton.ServiceProvider.GetRequiredService<IAddInTree>();
27+
var addInTree = ServiceSingleton.GetRequiredService<IAddInTree>();
2828
return addInTree.GetTreeNode(path, throwOnNotFound);
2929
}
3030
}
@@ -235,14 +235,14 @@ public void InsertAddIn(AddIn addIn)
235235
{
236236
string path = Path.Combine(addInRoot, bitmapResource);
237237
ResourceManager resourceManager = ResourceManager.CreateFileBasedResourceManager(Path.GetFileNameWithoutExtension(path), Path.GetDirectoryName(path), null);
238-
ServiceSingleton.ServiceProvider.GetRequiredService<IResourceService>().RegisterNeutralImages(resourceManager);
238+
ServiceSingleton.GetRequiredService<IResourceService>().RegisterNeutralImages(resourceManager);
239239
}
240240

241241
foreach(string stringResource in addIn.StringResources)
242242
{
243243
string path = Path.Combine(addInRoot, stringResource);
244244
ResourceManager resourceManager = ResourceManager.CreateFileBasedResourceManager(Path.GetFileNameWithoutExtension(path), Path.GetDirectoryName(path), null);
245-
ServiceSingleton.ServiceProvider.GetRequiredService<IResourceService>().RegisterNeutralStrings(resourceManager);
245+
ServiceSingleton.GetRequiredService<IResourceService>().RegisterNeutralStrings(resourceManager);
246246
}
247247
}
248248
addIns.Add(addIn);

src/Main/Core/Project/Src/AddInTree/CoreStartup.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public void RunInitialization()
177177
addInTree.Load(addInFiles, disabledAddIns);
178178

179179
// perform service registration
180-
var container = ServiceSingleton.ServiceProvider.GetService<IServiceContainer>();
180+
var container = (IServiceContainer)ServiceSingleton.ServiceProvider.GetService(typeof(IServiceContainer));
181181
if (container != null)
182182
addInTree.BuildItems<object>("/SharpDevelop/Services", container, false);
183183

@@ -188,7 +188,7 @@ public void RunInitialization()
188188
command.Run();
189189
} catch (Exception ex) {
190190
// allow startup to continue if some commands fail
191-
ServiceSingleton.ServiceProvider.GetRequiredService<IMessageService>().ShowException(ex);
191+
ServiceSingleton.GetRequiredService<IMessageService>().ShowException(ex);
192192
}
193193
}
194194
}
@@ -202,7 +202,7 @@ public void StartCoreServices()
202202
if (configDirectory == null)
203203
configDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
204204
applicationName);
205-
var container = ServiceSingleton.ServiceProvider.GetRequiredService<IServiceContainer>();
205+
var container = ServiceSingleton.GetRequiredService<IServiceContainer>();
206206
var propertyService = new PropertyServiceImpl(
207207
configDirectory,
208208
dataDirectory ?? Path.Combine(FileUtility.ApplicationRootPath, "data"),

src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ public static bool IsValidDirectoryEntryName(string name)
457457
public static bool TestFileExists(string filename)
458458
{
459459
if (!File.Exists(filename)) {
460-
var messageService = ServiceSingleton.ServiceProvider.GetRequiredService<IMessageService>();
460+
var messageService = ServiceSingleton.GetRequiredService<IMessageService>();
461461
messageService.ShowWarning(StringParser.Parse("${res:Fileutility.CantFindFileError}", new StringTagPair("FILE", filename)));
462462
return false;
463463
}
@@ -556,7 +556,7 @@ public static FileOperationResult ObservedSave(FileOperationDelegate saveFile, s
556556

557557
static FileOperationResult ObservedSaveHandleException(Exception e, FileOperationDelegate saveFile, string fileName, string message, FileErrorPolicy policy)
558558
{
559-
var messageService = ServiceSingleton.ServiceProvider.GetRequiredService<IMessageService>();
559+
var messageService = ServiceSingleton.GetRequiredService<IMessageService>();
560560
switch (policy) {
561561
case FileErrorPolicy.Inform:
562562
messageService.InformSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e);
@@ -601,7 +601,7 @@ public static FileOperationResult ObservedSave(NamedFileOperationDelegate saveFi
601601

602602
static FileOperationResult ObservedSaveHandleError(Exception e, NamedFileOperationDelegate saveFileAs, string fileName, string message, FileErrorPolicy policy)
603603
{
604-
var messageService = ServiceSingleton.ServiceProvider.GetRequiredService<IMessageService>();
604+
var messageService = ServiceSingleton.GetRequiredService<IMessageService>();
605605
switch (policy) {
606606
case FileErrorPolicy.Inform:
607607
messageService.InformSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileSaving}", e);
@@ -644,7 +644,7 @@ public static FileOperationResult ObservedLoad(FileOperationDelegate loadFile, s
644644

645645
static FileOperationResult ObservedLoadHandleException(Exception e, FileOperationDelegate loadFile, string fileName, string message, FileErrorPolicy policy)
646646
{
647-
var messageService = ServiceSingleton.ServiceProvider.GetRequiredService<IMessageService>();
647+
var messageService = ServiceSingleton.GetRequiredService<IMessageService>();
648648
switch (policy) {
649649
case FileErrorPolicy.Inform:
650650
messageService.InformSaveError(fileName, message, "${res:FileUtilityService.ErrorWhileLoading}", e);

src/Main/Core/Project/Src/Services/LoggingService/LoggingService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace ICSharpCode.Core
1111
public static class LoggingService
1212
{
1313
static ILoggingService Service {
14-
get { return ServiceSingleton.ServiceProvider.GetRequiredService<ILoggingService>(); }
14+
get { return ServiceSingleton.GetRequiredService<ILoggingService>(); }
1515
}
1616

1717
public static void Debug(object message)

0 commit comments

Comments
 (0)