Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable get instance by tag #8

Closed
wants to merge 5 commits into from
Closed

Conversation

toshiossada
Copy link

Once it's possible add Bind with tag should be abble to get intance by tag name too

@toshiossada toshiossada changed the title Enable get by intance Enable get instance by tag Aug 16, 2023
@jacobaraujo7
Copy link
Contributor

Terá uma modificação no sistema de módulos que impactará nessa modificação.
Vamos aguardar #5

@toshiossada
Copy link
Author

Terá uma modificação no sistema de módulos que impactará nessa modificação. Vamos aguardar #5

Vamos ver, fiz a alteraçao a pedido de alguem da comunidade ontem

@davidsdearaujo
Copy link
Member

@toshiossada now we use the layers structure to get all the binds.
I've removed tag from Binds because it was only used as a workaround to identify the Injector the bind came from.

Could you explain how it would be used?

@toshiossada
Copy link
Author

toshiossada commented Aug 21, 2023

seria para funcionar que nem o GetIt, aqui por exemplo temos casos que criamos binds do mesmo tipo e recuperamos por tagName, fazemos isso para utilizarmos em um sistema Server Driven UI, o @jacobaraujo7 explicou que irão utilizar a palavra 'tag' para outra coisa, entao podemos escolher outra nomenclatura como 'instanceName' ou como desejarem

@marcuspmd
Copy link

marcuspmd commented Aug 21, 2023

@davidsdearaujo um dos casos que eu tive foi, que tenho uma interface de envio de twoFactorAuthentication e pode ser enviado tanto por sms ou email, então tanto o caso de uso do twoFactorSmsImpl e twoFactorEmailImpl implementa a interface twoFactorAuthentication.

Então eu instanciava as duas classes no modular 5 e na hora que injectar, eu colocar Modular.get < twoFactorSmsImpl > () e Modular.get < twoFactorEmailImpl > () e dentro da view, de acordo aonde clicava enviar ou o usecase 1 ou o usecase 2, com a atualização que teve isso já não e mais possivel tendo que inserir mais uma camada de interface.

Então para realizar isso agora tenho que ter a twoFactorSms implements twoFactorAuthentication, e depois ter a twoFactorSmsImpl implements twoFactorSms, e do mesmo modo do email tambem, isso aumentando uma interface adicionar pra depois eu poder receber qualquer uma das duas no usecase principal.

towFactorSelect

@davidsdearaujo
Copy link
Member

scorpionslh

@davidsdearaujo um dos casos que eu tive foi, que tenho uma interface de envio de twoFactorAuthentication e pode ser enviado tanto por sms ou email, então tanto o caso de uso do twoFactorSmsImpl e twoFactorEmailImpl implementa a interface twoFactorAuthentication.

Então eu instanciava as duas classes no modular 5 e na hora que injectar, eu colocar Modular.get < twoFactorSmsImpl > () e Modular.get < twoFactorEmailImpl > () e dentro da view, de acordo aonde clicava enviar ou o usecase 1 ou o usecase 2, com a atualização que teve isso já não e mais possivel tendo que inserir mais uma camada de interface.

Então para realizar isso agora tenho que ter a twoFactorSms implements twoFactorAuthentication, e depois ter a twoFactorSmsImpl implements twoFactorSms, e do mesmo modo do email tambem, isso aumentando uma interface adicionar pra depois eu poder receber qualquer uma das duas no usecase principal.

Nesse caso você está referenciando diretamente as implementações, então deveria utilizar a própria classe implementação para injetar a dependência.

Não é porque está utilizando interfaces que sua estrutura está preparada para substituição de Liskov.

@marcuspmd
Copy link

Na verdade é pq ali estou utilizando strategy, pra mudar em runtime o usecase, o @jacobaraujo7 ate falou sobre instanciar isso na classe, pq o normal não e injetar nesse caso, mas na versão anterior funcionava passando a propria implementação, na versao 6 nao consigo da um modular.get na instancia, mas resolvi de outro modo.

@davidsdearaujo
Copy link
Member

davidsdearaujo commented Aug 23, 2023

Fiz um PR implementando esse sistema de tags novamente, mas agora ele é chamado de "key".

@jacobaraujo7
Copy link
Contributor

#13

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants