Comments (6)
Moreover, it is always possible to resolve this ambiguity manually in the constructor. Just add DependencyScope
as a constructor parameter and then request from the scope whatever needed.
from magnet.
Before getting a dependency from the scope someone needs to put this dependency into the scope. How would you write the code for putting it in this particular case?
from magnet.
As T
is a subtype of Number
then the DependencyScope
should receive some subtype of Number
, i.e.:
dependencyScope.register(Long.class, Long.MAX_VALUE);
from magnet.
And in case when I put
dependencyScope.register(Long.class, Long.MAX_VALUE);
dependencyScope.register(Byte.class, Byte.MIN_VALUE);
which value should be provided to constructor of FooImpl
?
from magnet.
I believe it is a design decision.
I would expect runtime error as both dependencies match.
Or alternatively the qualifiers could be utilised as Dagger does.
from magnet.
I was thinking about adding qualifiers later on, but they won't help here. It will still be possible to add both Float
and Byte
types with the same qualifier, which is fully valid construct, and this will produce ambiguity when the type is requested though a generic type. I believe even Dagger will fail to inject a generic type due to mentioned type ambiguity.
I'm going to disallow generics in implementation constructors for now. However compiler will fail with a meaningful message.
from magnet.
Related Issues (20)
- Unsupported KotlinClassMetadata of type null after update to Kotlin 1.5.20 HOT 1
- Provide SavedStateRegistryOwner in a magnet.Factory interface HOT 5
- No stetho-enabled processes running - with Magnet 3.6-rc1 HOT 4
- java.lang.IllegalStateException: Single instance requested, while many instances are stored HOT 3
- Cannot verify type declaration HOT 1
- When release version 3.7 ? HOT 1
- Magnet for Kotlin 1.8. HOT 1
- Injection overrides HOT 15
- Lazy construction HOT 26
- `@Instance(types)` must accept a classifier per type HOT 5
- Support default values in constructors and methods in Kotlin HOT 5
- Generics HOT 2
- Processor fails to generate Factory when custom scope name is used
- Lazy injection in Kotlin HOT 1
- Determine placement of instances HOT 16
- Implement scope visitor HOT 5
- 3.3-rc3 packaging issue HOT 6
- Wrong placement of instances when "getMany" and "sibling types" are used HOT 1
- Type binding HOT 17
- SelectorAttributeParser is treating nots as delimiters HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from magnet.