Pular para o conteúdo principal

Quickstart

1) Criar um container

Você pode usar um container local, ou o singleton global via GetInjector.

uses
Inject;

var
Injector: TInject;
begin
Injector := TInject.Create;
try
// Registros e resoluções aqui
finally
Injector.Free;
end;
end;

2) Registrar serviços

Injector.Singleton<TMinhaClasse>;
Injector.SingletonLazy<TMinhaClassePesada>;
Injector.Factory<TMinhaClasseTransient>;

3) Resolver serviços

var S1 := Injector.Get<TMinhaClasse>;
var S2 := Injector.Get<TMinhaClasse>;

4) Registrar e resolver interfaces

type
IMeuServico = interface
['{11111111-1111-1111-1111-111111111111}']
procedure Execute;
end;

TMeuServico = class(TInterfacedObject, IMeuServico)
public
procedure Execute;
end;

Injector.SingletonInterface<IMeuServico, TMeuServico>;

var Svc := Injector.GetInterface<IMeuServico>;
Svc.Execute;

1) Create a container

You can use a local container or the global singleton via GetInjector.

uses
Inject;

var
Injector: TInject;
begin
Injector := TInject.Create;
try
// registrations and resolutions
finally
Injector.Free;
end;
end;

2) Register services

Injector.Singleton<TMyService>;
Injector.SingletonLazy<THeavyService>;
Injector.Factory<TTransientService>;

3) Resolve services

var S1 := Injector.Get<TMyService>;
var S2 := Injector.Get<TMyService>;

4) Register and resolve interfaces

type
IMyService = interface
['{11111111-1111-1111-1111-111111111111}']
procedure Execute;
end;

TMyService = class(TInterfacedObject, IMyService)
public
procedure Execute;
end;

Injector.SingletonInterface<IMyService, TMyService>;

var Svc := Injector.GetInterface<IMyService>;
Svc.Execute;