0

类的实例A需要获取类的实例的依赖关系O,但对于其他类是单例。怎么做?

@injectable()
class O{}

// A must be single instance!
@injectable()
class A{
    constructor(o: O){
        console.log( 'is A instance' );
    }
}
@injectable()
class B{
    constructor(a: A){
        console.log( 'is B instance' );
    }
}
@injectable()
class C{
    constructor(a: A){
        console.log( 'is C instance' );
    }
}
@injectable()
class D{
    constructor(b: B, c: C){
        console.log( 'is D instance' );
    }
}


let container = new Container();
container.bind<B>( O ).to( O );
container.bind<B>( A ).toConstantValue( A ); // ?
container.bind<B>( B ).to( B );
container.bind<C>( C ).to( C );
container.bind<D>( D ).to( D );

container.get<D>(D);
4

1 回答 1

1

在文档中找不到它,但这里建议的 ide 是一个选项 -

@injectable()
class O{}

// A must be single instance!
@injectable()
class A{
    constructor(o: O){
        console.log( 'is A instance' );
    }
}
@injectable()
class B{
    constructor(a: A){
        console.log( 'is B instance' );
    }
}
@injectable()
class C{
    constructor(a: A){
        console.log( 'is C instance' );
    }
}
@injectable()
class D{
    constructor(b: B, c: C){
        console.log( 'is D instance' );
    }
}


let container = new Container();
container.bind<O>( O ).to( O );
container.bind<A>( A ).to( A ).inSingletonScope();
container.bind<B>( B ).to( B );
container.bind<C>( C ).to( C );
container.bind<D>( D ).to( D );

container.get<D>(D);
于 2016-12-12T17:08:28.207 回答