1
使用StructureMap,我们拥有所有类型的自动注册。如何指定命名实例作为StructureMap自动注册类型的构造函数参数
public class MessageRegistry : Registry
{
public MessageRegistry(){
Scan(x =>
{
x.AssemblyContainingType(typeof (FormatHelper));
x.ConnectImplementationsToTypesClosing(typeof (IMessage<>));
});
}
}
所以,如果我们寻找IMessage<Currency>
时,会发现以下类型:
CurrencyMessageHandler : IMessage<Currency>
{
public CurrencyMessageHandler(ISession instance)
}
至于构造函数参数类型的Isession,我们希望它是自动有线,但是,我们有像SqlSession和OracleSession这样的超过1个实现。在这种情况下,我们想通过SqlSession作为构造函数参数。
如何在这种情况下指定命名实例作为构造函数参数?
非常感谢。
根据我的经验,这是最好的避免这种构造,因为这会使代码和DI配置变得复杂。你能否多解释一下'CustomeType'的用途,它的使用方式,来自哪里以及它在应用程序的生命周期中如何改变? – Steven
感谢您的回复。我知道这不是一个好设计。我实际上可以重构代码以避免它。但是,我只是想知道是否有可能在不重构的情况下实现目标? (更新上面的问题:)) – Pii
那么你什么时候使用'SqlSession'和'OracleSession'呢?你的应用程序是否同时连接到两个数据库?他们都有自己的数据模型还是代表相同的模型? – Steven