博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NInject注入方式
阅读量:6037 次
发布时间:2019-06-20

本文共 1291 字,大约阅读时间需要 4 分钟。

  1.  Ninject官方网址为: 。
  2.    类的定义

     private IWeapon _weapon;

     

        //构造函数注入

        [Inject]

        public Samurai(IWeapon weapon)

        {

            _weapon = weapon;

        }

     

        //属性函数注入

        [Inject]

        public IWeapon Weapon

        {

            get

            {

                return _weapon;

            }

            set

            {

                _weapon = value;

            }

        }

     

        //方法函数注入

        [Inject]

        public void Arm(IWeapon weapon)

        {

            _weapon = weapon;

        }

     

        //字段函数注入

        [Inject]

        private IWeapon _weapon;

     

     

        public void Attack(string target)

        {

            _weapon.Hit(target);

        }

  3. 添加绑定关系(可创建多个Module)
    public class WarriorModule : NinjectModule
    {
    public override void
    Load()
    {
    Bind<IWeapon>().To<Sword>();
    Bind<Samurai>().ToSelf();
    }
    }
  4. 构造函数依注入(只能在一个构造函数上使用Inject)
     IKernel kernal = new StandardKernel(new WarriorModule());
    //Samurai s = new
    Samurai(kernal.Get<IWeapon>());
    // 构造函数注入
    Samurai s =
    kernal.Get<Samurai>();
    s.Attack("enemy");
  5. 属性注入
    IKernel kernal = new StandardKernel(new
    WarriorModule());
               
    Samurai s = new Samurai() { Weapon =
    kernal.Get<IWeapon>() };// 属性注入
               
    s.Attack("enemy");
  6. 方法注入
    IKernel kernal = new StandardKernel(new WarriorModule());
    Samurai s = new
    Samurai();
    s.Arm(kernal.Get<IWeapon>()); // 方法注入
    s.Attack("enemy");
  7. 字段注入 IKernel kernal =
new StandardKernel(
new WarriorModule());
Samurai s =
new Samurai();
s._weapon =
kernal.Get<IWeapon>();
//
需将Samurai类中字段_weapon修饰符改为public才可以访问
s.Attack(
"
enemy
");

转载于:https://www.cnblogs.com/gossip/archive/2012/05/15/2501307.html

你可能感兴趣的文章
java 获取系统当前时间的方法
查看>>
Ubuntu 10.04升级git 到1.7.2或更高的可行方法
查看>>
Spring Security4实战与原理分析视频课程( 扩展+自定义)
查看>>
第一周博客作业
查看>>
thinkpython2
查看>>
String、StringBuffer和StringBuilder的区别
查看>>
oracle recyclebin与flashback drop
查看>>
svmlight使用说明
查看>>
Swing 和AWT之间的关系
查看>>
Mysql设置自增长主键的初始值
查看>>
Android计时器正确应用方式解析
查看>>
获取post传输参数
查看>>
ASP生成静态页面的方法
查看>>
HDU 1325 Is It A Tree? 判断是否为一棵树
查看>>
Shell命令-文件压缩解压缩之gzip、zip
查看>>
个人总结
查看>>
uva 673 Parentheses Balance
查看>>
Bzoj 2252: [2010Beijing wc]矩阵距离 广搜
查看>>
css 禁止选中文本
查看>>
bzoj2165
查看>>