0

我有一个通用存储库,我想注册一个特定的配置,所以它的工作方式有点像策略模式。这是存储库:

public class ConfigProvider<T> : IConfigProvider<T> where T : class 

public ConfigProvider(IConfigFilePaths filePaths)
        {
            _filePaths = filePaths;
        }

这些是我的两个配置类,用于对 ConfigProvider 进行参数化

public interface IConfigFilePaths
{
    ...
}

public class DefaultContractTypePaths : IConfigFilePaths
{
    ...
}

public class TranslationPaths : IConfigFilePaths
{
    ...
}

所以我想对依赖项配置做的是这样的:

builder.RegisterType<ConfigProvider<TranslationSet>>().As<IConfigProvider<TranslationSet>>();
builder.UseForType<ConfigProvider<TranslationSet>>().The<TranslationPaths>(); // this obviously does not work

有谁知道如何告诉 autofac 它应该TranslationPaths用于ConfigProvider<TranslationSet>而不引入新接口来标记配置?

4

1 回答 1

1

您可以使用Named 参数,如下所示:

 builder
    .RegisterType<ConfigProvider<TranslationSet>>()
    .As<IConfigProvider<TranslationSet>>()
    .WithParameter("filePaths", new TranslationPaths());
于 2018-07-20T08:35:54.220 回答