依赖注入:版本5.8.6中不存在Unity.GetService

时间:2018-06-15 09:05:34

标签: c# dependency-injection unity-container

在Unity 5.7.3 UnityContainer 类中有 GetService 方法

public class UnityContainer : IUnityContainer, IDisposable, IServiceProvider
{
    public UnityContainer();

    public IUnityContainer Parent { get; }
    public IEnumerable<IContainerRegistration> Registrations { get; }

    public IUnityContainer AddExtension(UnityContainerExtension extension);
    public object BuildUp(Type typeToBuild, object existing, string nameToBuild, params ResolverOverride[] resolverOverrides);
    public object Configure(Type configurationInterface);
    public IUnityContainer CreateChildContainer();
    public void Dispose();
    public object GetService(Type serviceType);//here
    public bool IsRegistered(Type type, string name);
    public bool IsTypeRegisteredLocally(Type type, string name);
    public IUnityContainer RegisterInstance(Type registeredType, string name, object instance, LifetimeManager lifetimeManager);
    public IUnityContainer RegisterType(Type typeFrom, Type typeTo, string name, LifetimeManager lifetimeManager, InjectionMember[] injectionMembers);
    public object Resolve(Type typeToBuild, string nameToBuild, params ResolverOverride[] resolverOverrides);
    protected virtual void Dispose(bool disposing);
}

但版本 5.8.6 似乎不再存在

public class UnityContainer : IUnityContainer, IDisposable
{
    public UnityContainer();

    public IEnumerable<IContainerRegistration> Registrations { get; }
    public IUnityContainer Parent { get; }

    public IUnityContainer AddExtension(UnityContainerExtension extension);
    public object BuildUp(Type typeToBuild, object existing, string nameToBuild, params ResolverOverride[] resolverOverrides);
    public object Configure(Type configurationInterface);
    public IUnityContainer CreateChildContainer();
    public void Dispose();
    public bool IsRegistered(Type type, string name);
    public IUnityContainer RegisterInstance(Type registeredType, string name, object instance, LifetimeManager lifetimeManager);
    public IUnityContainer RegisterType(Type typeFrom, Type typeTo, string name, LifetimeManager lifetimeManager, InjectionMember[] injectionMembers);
    public object Resolve(Type typeToBuild, string nameToBuild, params ResolverOverride[] resolverOverrides);
    protected virtual void Dispose(bool disposing);
}

GetService方法似乎来自 mscorlib 程序集中 IServiceProvider

有没有人有关于如何在版本5.8.6中实现GetService功能的信息?

以下是我在5.7.3版中使用的示例代码,用于在我的控制台应用中获取服务

        var fooservice= (FooService)unity.GetService(typeof(IFooService));

0 个答案:

没有答案