C# .net 注册依赖服务 循环依赖问题

使用 autofac 注册服务依赖

 

builder.RegisterType<DictionaryTypeService>().As<IDictionaryTypeService>().InstancePerDependency();
builder.RegisterType<SysDictTypeController>().As<ISysDictTypeController>().InstancePerDependency();

 

Lazy 注入: 使用 Lazy<T> 类型来延迟注入依赖,以解决循环依赖问题

 
public class DictionaryTypeService : ISysDictTypeService
{
    private readonly Lazy<ISysDictTypeService> _sysDictDataService;

    public DictionaryTypeService(Lazy<ISysDictTypeService> sysDictDataService)
    {
        _sysDictDataService = sysDictDataService;
    }

    // Other members and methods
}

Lazy<T> 是一种延迟加载的方式

var lazyInstance = new Lazy<ISysDictTypeService>(() => new DictionaryTypeService());
var instance = lazyInstance.Value; // 获取实例
instance.YourMethod(); // 调用方法

 

 

使用延迟加载时避免多次获取 Value: 确保你只获取一次 Value,否则会多次实例化对象。

 

posted @ 2023-10-08 01:08  Echo_xxx  阅读(168)  评论(0编辑  收藏  举报