Hello,
I have injected Two instances from the same interface like that :
IBlobStorage storage = StorageFactory.Blobs.DirectoryFiles(directory);
_iocManager.IocContainer.Register(
Castle.MicroKernel.Registration.Component.For<IBlobStorage>().Instance(storage).Named(fileProviderName)
);
I resolve this instance like that :
FileProvider = _iocManager.IocContainer.Resolve<IBlobStorage>(FileProviderName);
I don't use IIocResolver or IScopedIocResolver because they don't have a resolve method by name but all work fine with that method.
I have read that if i resolve my instances with iocContainer I must release it. I'm in a domainservice context but I don't know where to do the release (I use my instance in many methods in my domain service). I have put a IDisposable interface on my domainservice but the debugger never go to the dispose method.
Have you an idea where to put this release or maybe on other method to resolve the named instance?
Thanks for your help.
Nicolas.
7 Answer(s)
-
0
try
using (var scope = _iocResolver.CreateScope()) { var FileProvider = _iocManager.IocContainer.Resolve<IBlobStorage>(FileProviderName); //... }Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Thanks for your answer.
I have 9 methods that use FileProvider in my domainservice so I must do that every time ?
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
What is the lifestyles of IBlobStorage?
Singleton or Transient
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Maliming,
IBlobStorage come from the storage.net nuget. An instance is provide by a factory method provided by the nuget and the instance is injected in castle windsor with a name. So it's a singleton.
There is the registration code called twice (for 2 instances of IBlobStorage) in the postInitialize method of my core module :
IBlobStorage storage = StorageFactory.Blobs.DirectoryFiles(directory); _iocManager.IocContainer.Register( Castle.MicroKernel.Registration.Component.For<IBlobStorage>().Instance(storage).Named(fileProviderName) );Hope this will help you to find the best implementation.
(It's pity that the register method of IScopedIocResolver do not take a string parameter to resolved the named injected instances)
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Hello,
Any idea ?
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
@willignicolas, if it is singleton, then you don't need to resolve it.
I have read that if i resolve my instances with iocContainer I must release it.
This is mostly valid for transient dependencies.
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image) -
0
Hello @ismcagdas,
Thanks for the answer.
Great news :)
Bye.
Markdown is supportedCopy & paste or drag & drop images (max 30 MB per image)