Skip to content

Instantly share code, notes, and snippets.

@mr5z
Created September 22, 2020 10:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mr5z/c5087d1b7dc5baac408c1628e4aeca1b to your computer and use it in GitHub Desktop.
Save mr5z/c5087d1b7dc5baac408c1628e4aeca1b to your computer and use it in GitHub Desktop.
IoC extension
using System;
using Prism.Ioc;
namespace ProjectName
{
// NOTE
// We should not register services that falls under these categories:
// 1. Implementation is platform-specific
// 2. Implementation requires a certain dependency which doesn't caters all use cases, e.g: Crash Analytics Service
public static class ContainerRegistryExtension
{
public static IContainerRegistry UseDomainProvider(this IContainerRegistry container, string apiAddress)
{
return container.RegisterInstance<IDomainProvider>(new DomainProvider(apiAddress));
}
public static IContainerRegistry UseDomainProvider(this IContainerRegistry container, string apiAddress, string authAddress)
{
return container.RegisterInstance<IDomainProvider>(new DomainProvider(apiAddress, authAddress));
}
public static IContainerRegistry UseDomainProvider(this IContainerRegistry container, string apiAddress, string authAddress, string webAddress)
{
return container.RegisterInstance<IDomainProvider>(new DomainProvider(apiAddress, authAddress, webAddress));
}
public static IContainerRegistry UseHttpService(this IContainerRegistry container)
{
return container.RegisterSingleton<IHttpService, HttpService>();
}
public static IContainerRegistry UseAuthService(this IContainerRegistry container)
{
return container.RegisterSingleton<IAuthService, AuthService>();
}
public static IContainerRegistry UseDownloadService(this IContainerRegistry container)
{
return container.RegisterSingleton<IDownloadService, DownloadService>();
}
public static IContainerRegistry UseDownloadManager(this IContainerRegistry container)
{
return container.RegisterSingleton<IDownloadManager, DownloadManager>();
}
public static IContainerRegistry UseCachingService(this IContainerRegistry container, string applicationId)
{
return container.RegisterInstance<ICachingService>(new CachingService(applicationId));
}
public static IContainerRegistry UsePermissionService(this IContainerRegistry container)
{
return container.RegisterSingleton<IPermissionService, PermissionService>();
}
public static IContainerRegistry UseUploadManager(this IContainerRegistry container)
{
return container.RegisterSingleton<IUploadManager, UploadManager>();
}
public static IContainerRegistry UseUploadService(this IContainerRegistry container)
{
return container.RegisterSingleton<IUploadService, UploadService>();
}
public static IContainerRegistry UseDispatcherService(this IContainerRegistry container)
{
return container.RegisterSingleton<IDispatcherService, DispatcherService>();
}
public static IContainerRegistry UsePathProvider(this IContainerRegistry container)
{
return container.RegisterSingleton<IPathProvider, PathProvider>();
}
public static IContainerRegistry UseAuthorizedHttpService(this IContainerRegistry container)
{
return container.RegisterSingleton<IAuthorizedHttpService, AuthorizedHttpService>();
}
public static IContainerRegistry UseAnonymousHttpService(this IContainerRegistry container)
{
return container.RegisterSingleton<IAnonymousHttpService, AnonymousHttpService>();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment