Что касается инициализации StructureMap ...
Метод LookForRegistries находит только классы реестра, которые имеют конструкторы с нулевым параметром. Это имеет смысл - StructureMap еще не инициализирован и не готов к использованию; он не готов вводить зависимости. Если вы хотите внедрить зависимость в ваш класс Registry, вам нужно сделать это вручную. (Если есть другие методы, я не знаю о них.)
Если вы следуете «примеру 1» отсюда http://structuremap.net/structuremap/RegistryDSL.htm#section2, вы можете сделать это, но я полагаю, что в примере предполагается, что вы будете использовать полученный экземпляр Container, а не обязательно статические методы ObjectFactory. (Не уверен, как работает регистрация типов в определенном контейнере.)
Кроме того, вы можете удалить параметр конструктора. Я верю, что это будет работать:
public class WcfNHibernateRegistry : Registry
{
public WcfNHibernateRegistry()
{
For<ISessionFactory>().Singleton().Use(() => {
var cfg = new NHibernate.Cfg.Configuration();
cfg.Configure();
return cfg.BuildSessionFactory();
});
For<ISession>().Use(() => {
var fac = ObjectFactory.GetInstance<ISessionFactory>();
return fac.GetCurrentSession();
});
}
}