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
,否则会多次实例化对象。