Как я уже упоминал в моем комментарии выше, вы можете использовать фабричный метод, чтобы убедиться, что контейнер StructureMap развернут и готов к использованию классов верхнего уровня в вашей библиотеке. Вот пример.
public interface ILibraryClass
{
void SomethingAwesome();
}
public class LibraryClass : ILibraryClass
{
public void SomethingAwesome()
{
}
}
public class API
{
private static IContainer _container;
private static IContainer Container
{
get
{
if (_container == null) //TODO add locking around this for thread safety?
InitializeContainer();
return _container;
}
}
private static void InitializeContainer()
{
_container = new Container(config => { config.For<ILibraryClass>().Use<LibraryClass>(); });
}
public static ILibraryClass LibraryClass()
{
return Container.GetInstance<ILibraryClass>();
}
}
[Test]
public void library_factory_method()
{
API.LibraryClass().ShouldBeOfType<LibraryClass>();
}