-
Notifications
You must be signed in to change notification settings - Fork 15
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
Conversation
Terá uma modificação no sistema de módulos que impactará nessa modificação. |
Vamos ver, fiz a alteraçao a pedido de alguem da comunidade ontem |
@toshiossada now we use the layers structure to get all the binds. Could you explain how it would be used? |
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 |
@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. |
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. |
Fiz um PR implementando esse sistema de tags novamente, mas agora ele é chamado de "key". |
Once it's possible add Bind with tag should be abble to get intance by tag name too