2012-04-15 80 views
0

这是我的接口和类:注入到静态字段

public interface IWeapon 
{ 
    void Shoot(); 
} 

public interface IWarrior 
{ 
    void Kill(); 
} 

public class Killer : IWarrior 
{ 
    private static IWeapon _weapon; 

    public void Kill() 
    { 
     _weapon.Shoot(); 
    } 
} 

public class Rifle : IWeapon 
{ 
    public void Shoot() 
    { 
    } 
} 

我怎么能在杀手类Ninject注入步枪?

+3

为什么要首先将'_weapon'设为静态?当然,两个不同的杀手可以有不同的武器... – 2012-04-15 06:44:53

+1

金融危机也可以杀死凶手:只有一种武器可用...... :) – Tigran 2012-04-15 06:48:24

+2

您可以使用[InSingletonScope](http://blog.bobcravens.com/2010/ 03/ninject-life-cycle-management-or-scoping /)如果你只想要一个实例。 – 2012-04-15 06:52:00

回答

2

Ninject不会注入静态,因为这应该使用InSingletonScope来完成。它也不支持字段注入,因为字段不应该从课程外部访问。改用构造函数或属性注入。