As I mentioned in my comment above, you can use the factory method to ensure that the StructureMap container is deployed and ready to go for the top-level classes in your library. Here is an example.
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)
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>();
}
source
share