Alex Rivera | Logout

Telling StructureMap to use another Constructor

Asked 2011-08-09T15:03:28.990
10

I have a class with 2 constructors.

MyClass()

and

MyClass(IMyService service)

How do I tell StructureMap then whenever I do a 'new MyClass()' it should actually call the second constructor and not the first constructor.

Please help.

Edit
Report

1 Answer

23

If you call new MyClass(), then StructureMap is not involved at all. No amount of StructureMap configuration will change the behavior.

If you call ObjectFactory.GetInstance<MyClass>(), StructureMap will by default call the constructor with more parameters.

If you want StructureMap to use a different constructor, you can specify the constructor (via PHeiberg's answer):

x.SelectConstructor<IMyClass>(() => new MyClass(null));

Or you can just tell StructureMap explicitly how to create the instance using the overload of Use() that accepts a Func<>:

x.For<IMyClass>().Use(ctx => new MyClass(ctx.GetInstance<IMyService>()))
answered 2011-08-09T16:50:52.807

Your Answer