3
votes

Is there any way to request an instance from the StructureMap ObjectFactory by the string name of the type? For example, it would be nice to do something like this:

var thing = ObjectFactory.GetInstance("Thing");

The use case here is a messaging scenario in which the message is very generic and contains only the name of a task. A handler receives the message, gets the task name from the message and retrieves the type name of the associated task runner from a configuration database. StructureMap scans all the assemblies in a directory and one of them will (presumably) contain the type returned from the config database which then needs to be instantiated.

The other possibility is to grab a Type instance by doing the following:

var type = Type.GetType("Thing");

But the problem there is the assembly may or may/not be loaded in the AppDomain so that reflection call isn't always possible.

1
If StructureMap has scanned the assemblies, they will be loaded in the AppDomain. If Type.GetType() can't get it, StructureMap wont be able to either. - Joshua Flanagan

1 Answers

0
votes

I recently had the exact same issue of GetType not returning a type event though StructureMap had correctly loaded it from a scanned assembly.

My problem was I was not using the assembly qualified name and I presume without this the GetType method simply looks in the current assembly.

Anyway adding the full name sorted my problem.

Hope this helps.

Ian