C# , .netWebApi, WPF 用特性实现类似Java 的Ioc 自动装配@Autowired

写C# 一直很羡慕Java的@Autowired 自动装配. 因为C# 必须手动在Ioc里注册

之前用接口实现了自动注册IOC, 总是觉得美中不足, 毕竟没有真正实现用注解/特性实现自动注入, 这次我们来实现一个用特性注入Ioc的扩展方法.

namespace MyCode.BLL.Service.Ioc
{
   
    /// 
    /// 类型的生命周期枚举
    /// 
    public enum Lifetime
    {
   
        /// 
        /// 单例
        /// 
        Singleton,
        /// 
        /// 多例
        /// 
        Transient,
        Scoped

    }

    /// 
    /// 标注类型的生命周期、是否自动初始化
    /// 
    [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
    public class ExposedServiceAttribute : Attribute
    {
   
        public Lifetime Lifetime {
    get; set; }

        public bool AutoInitialize {
    get; set; }

        public Type[] Types {
    get; set; }

        public ExposedServiceAttribute(Lifetime lifetime = Lifetime.Transient, params Type[] types)
        {
   
            Lifetime = lifetime;
            Types = types;
        }
    }
}

using Microsoft.Extensions.

你可能感兴趣的:(c#,.net,wpf)