我的类(让我们称之为FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app
ENV ASPNETCORE_URLS="http://*:5000"
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/out .
EXPOSE 5000
ENTRYPOINT ["dotnet", "Wishare-Integration-Api.dll"]
和X
)都实现Y
接口做(相对)CPU密集型操作来构建某些语法的解析器({{1}的不同语法}和Parser
)。
现在我想将X
和Y
的依赖关系注入(使用Guice)到(上层)解析器X
的构造函数中。 Y
的两个参数都应为P
类型:
P
如何让Guice区分Parser
的两个论点中哪一个会收到class P implements Parser {
@Inject
public P(Parser x, Parser y) {
// ...
}
}
和P
?
根据您的理解,X
和Y
应注明X
(但此注释似乎与问题无关)。
答案 0 :(得分:1)
您需要使用Named这样的注释:
class P implements Parser {
@Inject
public P(@Named("x") Parser x, @Named("y") Parser y) {
// ...
}
}
Guice配置中的将每个命名变量分配给他自己的实现类
bind(Parser.class)
.annotatedWith(Names.named("x"))
.to(ParserXImplementation.class);
bind(Parser.class)
.annotatedWith(Names.named("y"))
.to(ParserYImplementation.class);