Unity高性能依赖注入框架Extenject(Zenject)----- 条件绑定案例详解

Demo:


using UnityEngine;
using Zenject;
public class TestConditionalBindingInstaller : MonoInstaller
{
    public override void InstallBindings()
    {
        //Int默认注入为5
        Container.Bind<int>().FromInstance(5);
        //ConditionalA中的Int注入为10
        Container.Bind<int>().FromInstance(10).When(context => context.ObjectType==typeof(ConditionalA));
        //ConditionalB中的Int注入为20
        Container.Bind<int>().FromInstance(20).WhenInjectedInto<ConditionalB>();
        //实例化的conditionalC01注入int为30
        Container.Bind<int>().FromInstance(30).When(context => context.ObjectInstance==conditionalC01);
    }
    ConditionalC conditionalC01=new ConditionalC();
    
    public  void Start()
    {
       ConditionalA conditionalA=new ConditionalA();
       ConditionalB conditionalB=new ConditionalB();
       ConditionalC conditionalC02=new ConditionalC();

       //注入
       Container.Inject(conditionalA);
       Container.Inject(conditionalB);
       Container.Inject(conditionalC01);
       Container.Inject(conditionalC02);

       //调试
       Debug.LogFormat("注入ConditianalA中的Int数值,猜测为10,实际为{0};注入ConditianalB中的Int数值,猜测为20,实际为{1};",conditionalA.Number,conditionalB.Number);
       Debug.LogFormat("注入conditionalC01中的Int数值,猜测为30,实际为{0};注入conditionalC02中的Int数值,猜测为5,实际为是{1};",conditionalC01.Number,conditionalC02.Number);
    }
    
}
public class ConditionalA
{
    [Inject] public  int Number;
}
public class ConditionalB
{
    [Inject] public int Number;
}
public class ConditionalC
 {
     [Inject] public  int Number;
 }

运行结果: 和猜测一个样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值