Giter Site home page Giter Site logo

Comments (8)

dadhi avatar dadhi commented on May 25, 2024 1

@detoxhby The keyed services will be supported in the DryIoc v6 version. The support is already added. The version still need the final touches.

from dryioc.

dadhi avatar dadhi commented on May 25, 2024 1

@detoxhby Here it is dotnet add package DryIoc.Microsoft.DependencyInjection --version 8.0.0-preview-01

from dryioc.

detoxhby avatar detoxhby commented on May 25, 2024

@dadhi thanks!

Will you publish pre-release for testing beforehand? Would like to help by checking out in real projects!

from dryioc.

detoxhby avatar detoxhby commented on May 25, 2024

@detoxhby Here it is dotnet add package DryIoc.Microsoft.DependencyInjection --version 8.0.0-preview-01

thanks, we've done testing and apart from the change in ConfigureContainer calls (IContainer to DryIocServiceProvider) the only issue is the Request class' API parameter changes of IContainer to Container which is a problem because generally we use the interface to reference the container and casting it down is unsafe
Can we ask why is this change was necessary? and if this is mandatory then what kind of workaround should we use to gain the typed container?

from dryioc.

dadhi avatar dadhi commented on May 25, 2024

Could you provide the example with the casting?
What are using Request.Container for?

from dryioc.

detoxhby avatar detoxhby commented on May 25, 2024

Could you provide the example with the casting? What are using Request.Container for?

for factory based registrations/resolutions we use this for ex.:

CurrentContainer.ResolveFactory(Request.Create(CurrentContainer, ServiceInfo.Of<T>(serviceKey: key))).FactoryID

CurrentContainer is the IContainer and with v6 we need to cast it to (Container) atm

from dryioc.

dadhi avatar dadhi commented on May 25, 2024

@detoxhby Got it, will check.

Btw, I am still interested why do it with such a "low level" DryIoc stuff, are you integrating with some lib?

from dryioc.

detoxhby avatar detoxhby commented on May 25, 2024

Btw, I am still interested why do it with such a "low level" DryIoc stuff, are you integrating with some lib?

we are mainly using it for factory-based scoped registrations to be able to replace them dynamically during an execution (actually, this solution was discussed with you a few years ago because it was not possible earlier :))

// registration
var factory = ReflectionFactory.Of(typeof(TImplementation), reuse, made, setup);
var id = new FactoryIdentifier<TService>(factory.FactoryID);

container.Register(typeof(TService), factory, ifAlreadyRegistered, serviceKey);
container.RegisterInstance(typeof(FactoryIdentifier<TService>), id, serviceKey: serviceKey);


// usage (context is IResolverContext)
context.CurrentScope.SetOrAdd(context.Resolve<FactoryIdentifier<T>>(), instance)

The previous ResolveFactory is used in other testing env where we need to access the main factory (due to abstraction/isolation over different DI containers) but actually not mandatory functionality, we can probably drop it if required.
If there's an alternative API to avoid this we are willing to leave low-level parts behind.

from dryioc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.