2012-04-15 13 views
0

dies ist meine Schnittstellen und Klassen:zu statischem Feld Injizieren

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() 
    { 
    } 
} 

Wie ich Gewehr in Killer-Klasse mit Ninject injizieren?

+3

Warum möchten Sie, dass '_weapon' in erster Linie statisch ist? Sicherlich könnten zwei verschiedene Killer verschiedene Waffen haben ... –

+1

Die finale Crysis trifft auch Killer: eine Waffenart nur verfügbar ... :) – Tigran

+2

Du kannst [InSingletonScope] benutzen (http://blog.bobcravens.com/2010/ 03/ninject-life-cycle-management-or-scoping /) wenn Sie nur eine Instanz wünschen. –

Antwort

2

Ninject injiziert keine Statik, da dies mit InSingletonScope erfolgen soll. Es unterstützt auch keine Feldinjektion, da auf Felder nicht von außerhalb einer Klasse zugegriffen werden sollte. Verwenden Sie stattdessen Konstruktor oder Eigenschafteninjektion.

Verwandte Themen