Open Rmonik opened 5 months ago
I cannot reproduce this issue. The test case i use:
import { expect } from "chai";
import { Container } from "../../src/inversify";
import { injectable } from "../../src/annotation/injectable";
@injectable()
class World {
hello() {
return "Hello World!";
}
}
describe("Symbol binding", () => {
it("Should support Symbol() as service identifier", () => {
const fooIdentifier = Symbol("FooInterface");
const container = new Container();
container.bind(fooIdentifier).to(World);
container.getAsync(fooIdentifier).then((foo: any) => {
foo.hello();
});
expect(container.get(fooIdentifier)).to.be.instanceof(World);
});
});
Version: 6.02
Given that you use a global object which holds Symbol("Something") values and having bound a class to that identifier. If I try to get that identifier from the container, i get a "No bindings found" error. When changing the Symbol to a Symbol.for, this issue is not present.
Expected Behavior
Symbol() should work just as well as Symbol.for.
Current Behavior
Using a Symbol() doesn't correctly resolve dependencies.
Possible Solution
Steps to Reproduce (for bugs)
const a = Symbol("a");
container.bind(a).to(MyClass);
container.getAsync(a);
Context
I would like to use true Symbols (as opposed to Symbol.for, which i don't see the point in using) as we're facing naming collisions.
Your Environment
Stack trace