无名 发表于 2022-5-8 17:32:18

【L·S】浅谈.Net Core Dependency 五

public class ServiceDescriptor{    public ServiceDescriptor(      Type serviceType,      Type implementationType,      ServiceLifetime lifetime)      : this(serviceType, lifetime)    {      ImplementationType = implementationType;    }    public ServiceDescriptor(      Type serviceType,      object instance)      : this(serviceType, ServiceLifetime.Singleton)    {      ImplementationInstance = instance;    }    public ServiceDescriptor(      Type serviceType,      Func factory,      ServiceLifetime lifetime)      : this(serviceType, lifetime)    {      ImplementationFactory = factory;    }    private ServiceDescriptor(Type serviceType, ServiceLifetime lifetime)    {      Lifetime = lifetime;      ServiceType = serviceType;    }    public ServiceLifetime Lifetime { get; }    public Type ServiceType { get; }    public Type ImplementationType { get; }    public object ImplementationInstance { get; }    public Func ImplementationFactory { get; }}这里我们只是粘贴了初始化的方法,通过这个初始化我们得到了,本质其实就是给描述具体注册的Lifetime、ServiceType、ImplementationType、ImplementationInstance、ImplementationFactory赋值。在平时的使用中,我们在注册服务的时候还会用到这种注册方式Copyservices.Add(ServiceDescriptor.Scoped());//services.Add(ServiceDescriptor.Scoped(typeof(IPersonService),typeof(PersonService)));//或services.Add(ServiceDescriptor.Transient());//services.Add(ServiceDescriptor.Transient(typeof(IPersonService), typeof(PersonService)));//或services.Add(ServiceDescriptor.Singleton());//services.Add(ServiceDescriptor.Singleton(typeof(IPersonService), typeof(PersonService)));这种注册方式是通过ServiceDescriptor自身的操作去注册相关实例,我们拿出来其中一个Transient看一下具体实现
http://cdn.u1.huluxia.com/g4/M03/A8/68/rBAAdl8HssmAcXJdAAKqv8KiwVM726.jpg
页: [1]
查看完整版本: 【L·S】浅谈.Net Core Dependency 五