Skip to content

stevewoj/NetServiceLocator

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

NetServiceLocator

Nuget: https://www.nuget.org/packages/NetServiceLocator/1.0.0

How to use the NetServiceLocator?

The code is seperated into 3 parts:

  • Declaration of Services
  • Discovery of Services
  • Importing the services

First you must annoate your type with the corresponding Attribute. You can use:

  • [SingletonServiceAttribute]
  • [TransientServiceAttribute]
  • [ScopedServiceAttribute]
  • or the parameter of the [ServiceAttribute]

to declare your type a service. Use the params Type[] registerAs parameter of the attributes to declare all service interfaces your Type should be registered with like this:

[SingeltonService(typeof(IFooRepository), typeof(IDatabaseRepository))] //this is the same as
[Service(typeof(IFooRepository), typeof(IDatabaseRepository), RegistrationType = ServiceLifetime.Singleton)] //as this
public class FooRepository : IFooRepository
{
    public string Connection { get; set; }
    public async Task DoStuff() { }
}

public interface IFooRepository : IDatabaseRepository
{
    Task DoStuff();
}

public interface IDatabaseRepository
{
    string Connection { get; set; }
}

then you should setup your discovery options on a IServiceCollection:

using ServiceLocator.Discovery;
public void ConfigureServices(IServiceCollection services)
{
  services.UseServiceDiscovery()
    .DiscoverFromAppDomain() //Loads all services from all loaded Assemblies in the current AppDomain
    .DiscoverFromAssembly(Assembly) //Loads all services from that Assembly
    .DiscoverTypes(IEnumerable<Type>) //Loads all given types
}

After you discovered your services you Locate your services and import them into your IServiceCollection:

using ServiceLocator.Discovery;
public void ConfigureServices(IServiceCollection services)
{
  services.UseServiceDiscovery()
  ...
  .LocateServices() //this imports all services into IServiceCollection
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C# 100.0%