Lenic.DI -- Another IOC Container Library Using Delegate
Lenic.DI
Another IOC Container Library Using Delegate.
Characteristic
- Use delegate generated object.
- Support the uncertain parameters.
- Lazy load.
Basic Usage
IContainer container = new Container(); container.Register(null, c => new Person() { Id = 3, Name = "张三" }); var p = container.Resolve<Person>(); Assert.IsInstanceOfType(p, typeof(Person)); Assert.AreEqual(3, p.Id); Assert.AreEqual("张三", p.Name);
Singleton Lifetime:
IContainer container = new Container(); container.Register(new SingleLifetime(), c => new Person() { Id = 4, Name = "李四" }); var p = container.Resolve<Person>(); Assert.IsInstanceOfType(p, typeof(Person)); Assert.AreSame(p, container.Resolve<Person>()); Assert.AreEqual(4, p.Id); Assert.AreEqual("李四", p.Name);
And, has other lifetime, Waiting for you to explore.
Use it with iterative method:
IContainer container = new Container(); container.Register(null, c => new Person() { Id = 3, Name = "张三" }) .RegisterNamed(null, "x", c => new Person() { Id = 4, Name = c.Resolve<Person>().Name }); var p = container.ResolveNamed<Person>("x"); Assert.IsInstanceOfType(p, typeof(Person)); Assert.AreEqual(4, p.Id); Assert.AreEqual("张三", p.Name);
Auto Register:
IContainer container = new Container(); container.OnResolveError += ContainerExtensions.DefaultRegister(); var p = container.Resolve<Person>(); Assert.IsNotNull(p);
Auto Interface Register:
IContainer container = new Container(); var interfaceRegister = ContainerExtensions.InterfaceRegister(); container.OnResolveError += interfaceRegister; var im = container.Resolve<IPerson>(); Assert.IsNotNull(im); Assert.IsInstanceOfType(im, typeof(IPerson));
Auto Generic Register:
IContainer container = new Container(); container.Register(null, c => 16); container.OnResolveError += ContainerExtensions.GenericRegister(typeof(IList<>), typeof(List<>)); var g = container.Resolve<IList<string>>(); Assert.IsNotNull(g); Assert.IsInstanceOfType(g, typeof(IList<string>));
And other, will be coming...
Look it on CodePlex, Thank you.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库