Code Monkey home page Code Monkey logo

Comments (2)

grumpydev avatar grumpydev commented on August 24, 2024

What is this doing that the existing AutoRegister doesn't already do?

As for it being accessible, it's an internal concern of the container, but the main container class is intentionally a partial class to allow for extensions like this without touching the main cs file, so if you create another partial with the method you want it will be able to access the private _RegisteredTypes field.

from tinyioc.

bitbonk avatar bitbonk commented on August 24, 2024

What is this doing that the existing AutoRegister doesn't already do?

  1. It doesn't leave the existing registrations untouched.
  2. The registration rules are very specific, and I don't see how to implemenet all of them using the existing AutoRegister methods. These are the rules:
    • It should only look at the assemblies loaded into the current appdomain.
    • There are some assemblies of the current appdomain that should be ignored.
    • It should only register interfaces as keys (no concrete types, no abstract classes).
    • It sould only register interfaces as keys that are not declared in the ignored assemblies even if the found concrete implementations are declared outside the ingored assemblies.
    • If multiple concrete implementations are found, it should use RegisterMultiple.

Thanks for the tip with the partial classes. So I could easily implement this:

public partial class TinyIoCContainer
{
    /// <summary>
    ///     Gets all types that are registered as keys with this container.
    /// </summary>
    public IEnumerable<Type> RegisterdTypes
    {
        get
        {
            return this._RegisteredTypes.Keys.Select(rt => rt.Type).Distinct();
        }
    }
}

from tinyioc.

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.