Внутри вашей обычной конфигурации StructureMap я бы добавил этот код:
ObjectFactory.Initialize(x =>
{
x.ForRequestedType<IMessageHandler<MessageA>>().
TheDefaultIsConcreteType<MyImplementingClass>().
CacheBy(InstanceScope.HttpSession);
x.ForRequestedType<IMessageHandler<MessageB>>().
TheDefaultIsConcreteType<MyImplementingClass>>().
CacheBy(InstanceScope.HttpSession);});
}
Обратите внимание, что вам понадобится версия 2.5.3 StructureMap, как описано в этой теме SO: StructureMap CacheBy InstanceScope.HttpSession не работает
В данный момент у меня нет компилятора, но я считаю, что CacheBy достаточно умен, чтобы делиться объектами между реализующими классами. Если нет, вы можете создать MyImplementingClass другим способом, а затем использовать TheDefaultIs () вместо TheDefaultIsConcreteType ().