.Net Ioc Unity

时间:2023-03-09 01:53:39
.Net Ioc Unity

Unity 的接口IUnityContainer

public interface IUnityContainer : IDisposable

IUnityContainer RegisterType(Type from, Type to, string name, LifetimeManager lifetimeManager,
                                          params InjectionMember[] injectionMembers);

IUnityContainer RegisterInstance(Type t, string name, object instance, LifetimeManager lifetime);

分别用来注册类型和注册单例的方法。

类UnityContainer 实现了IUnityContainer 接口

public class UnityContainer : IUnityContainer

NamedTypesRegistry 这个类保存了类型注册在Container 中的别名。

internal class NamedTypesRegistry
    {
        private readonly Dictionary<Type, List<string>> registeredKeys;
        private readonly NamedTypesRegistry parent;

        public NamedTypesRegistry()
            : this(null)
        {
        }

所有注册过的东西扔到了一个IEnumerabler 里面

/// <summary>
/// Get a sequence of <see cref="ContainerRegistration"/> that describe the current state
/// of the container.
/// </summary>
IEnumerable<ContainerRegistration> Registrations { get; }