我有2个类可以处理2种不同的资源,它们是 SettingsHandler 和 StorageHandler 。 两者都有类似的构造函数:
public class StorageHandler
{
private readonly IStorageConfig _config;
private readonly ApiClient _apiClient;
public StorageHandler(IStorageConfig config, ApiClient apiClient)
{
_config = config;
_apiClient = apiClient;
}
/------- ! -------/
}
public class SettingsHandler
{
private readonly ISettingsConfig _config;
private readonly ApiClient _apiClient;
public SettingsHandler(ISettingsConfig config, ApiClient apiClient)
{
_config = config;
_apiClient = apiClient;
}
/------- ! -------/
}
然后我有这样的配置:
public class Config: ISettingsConfig, IStorageConfig
{
}
在我的模块类中,我将配置文件注册两次(如果有更多接口则多次注册),如下所示:
builder.RegisterType<Config>().As<ISettingsConfig>().SingleInstance();
builder.RegisterType<Config>().As<IStorageConfig>().SingleInstance();
我希望这会奏效,但我不确定我是否正确这样做。 有人可以帮我一把吗?
答案 0 :(得分:0)
您可以将其注册为:
builder.RegisterType<Config>()
.As<ISettingsConfig>()
.As<IStorageConfig>()
.SingleInstance();
但请务必注册StorageHandler
和SettingsHandler
:
builder.RegisterType<StorageHandler>().AsSelf();
builder.RegisterType<SettingsHandler>().AsSelf();
构建容器后,您应该能够解析StorageHandler
和SettingsHandler
:
var container = builder.Build();
var storageHandler = container.Resolve<StorageHandler>();
var settingsHandler = container.Resolve<SettingsHandler>();
如果一个类上有很多接口,也可以调用AsImplementedInterfaces()
。