views:

250

answers:

1

I'd like to create a OnePerSessionBehavior for NInject (v1.0) and I've mostly got it working. The only issue that remains is how to pass in fresh arguments using .WithArguments() as each new session asks for something from the container. Right now I'm keeping a reference to the container as an application variable and therefore the module only ever gets loaded one time so of course the binding only occurs once.

For example, the following returns individual instances of 'Something' for each new session, but the constructor argument passed in to all sessions is the same DateTime.

Bind<ISomething>()
    .To<Something>()
    .Using<OnePerSessionBehavior>()
    .WithArgument("currentDateTime", DateTime.Now);
A: 

You're passing a value that's evaluated during the definition of the binding. That's why you get the same value over and over again. Actually from the top of my head I don't have an easy answer to that but I'll definitely think about it as it might be useful for testing purposes for me to.

Matthias Hryniszak