2012-04-15 79 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來完成。它也不支持字段注入,因爲字段不應該從課程外部訪問。改用構造函數或屬性注入。