在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));