C# autofac从同一接口继承多个类

C# autofac从同一接口继承多个类,c#,interface,autofac,registration,C#,Interface,Autofac,Registration,我使用autofac将依赖项注入到我的类中。其中几个类都实现了相同的接口。我是这样登记的 builder.RegisterType<PDFHedgeReport<object>>().As<IPDFReport<object>>().InstancePerDependency(); builder.RegisterType<PDFRefVolReport<object>>().As<IPDFReport

我使用autofac将依赖项注入到我的类中。其中几个类都实现了相同的接口。我是这样登记的

builder.RegisterType<PDFHedgeReport<object>>().As<IPDFReport<object>>().InstancePerDependency();
        builder.RegisterType<PDFRefVolReport<object>>().As<IPDFReport<object>>().InstancePerDependency();
实际上,被访问的不是pdfHedgereport类,而是它的pdfRefVolReport


那么,我是否以错误的方式向autofac注册了这些内容???

默认情况下,最后注册的类型将返回,这就是您看到的类型

您可能想查看如何注册不同的类型

代码看起来像这样

注册:

var builder = new ContainerBuilder();
builder.RegisterType<PDFHedgeReport<object>>().Keyed<ExportEngine.PDF.IPDFReport<object>>("first");
builder.RegisterType<PDFRefVolReport<object>>().Keyed<ExportEngine.PDF.IPDFReport<object>>("second");
var container = builder.Build();
某些构造函数:

ctor(IIndex<string, ExportEngine.PDF.IPDFReport<object>> pdfHedgeReportCollection)
{
    this.hedgeRefReport = pdfHedgeReportCollection["first"];
    this.refVolReport = pdfHedgeReportCollection["second"]
}
这就是我在使用Autofac时做这类事情的方式,它工作得很好

var builder = new ContainerBuilder();
builder.RegisterType<PDFHedgeReport<object>>().Keyed<ExportEngine.PDF.IPDFReport<object>>("first");
builder.RegisterType<PDFRefVolReport<object>>().Keyed<ExportEngine.PDF.IPDFReport<object>>("second");
var container = builder.Build();
ctor(IIndex<string, ExportEngine.PDF.IPDFReport<object>> pdfHedgeReportCollection)
{
    this.hedgeRefReport = pdfHedgeReportCollection["first"];
    this.refVolReport = pdfHedgeReportCollection["second"]
}