2016-03-23 16 views
0

Projem Model, Hizmetler, DAO deposu, Unity ve Web formları bölümüyle ayrılmıştır. Sayfanın içinde birçok bağımlılık var ve kodu yeniden kodlamak istiyorum. ProjemdeWeb formları Page_Init içinde hizmetleri başlat

ben bu

 private DealsService dealsService; 
     private DealsParser dealParser; 
     private PeopleBinder peopleBinder; 
     private DealStatusService dealStatusService; 
     private PersonsService personService; 
     private PersonalMetricsService metricService; 
     private DealRelationsService dealRealtionService; 
     private AuditReportService auditService; 
     private ProductLineService productLineService; 
     private DealProductLineService dealProdLineService; 
     private DynamicColumnsService dynamicColService; 
     private DealValuesService dealValuesService; 

protected void Page_Init(object sender, EventArgs e) 
     { 
      dealsService = new DealsService(); 
      peopleBinder = new PeopleBinder(); 
      dealParser = new DealsParser(); 
      dealStatusService = new DealStatusService(); 
      editDealId = Request.Params["ID"]; 
      FinancialPeriod = Request.Params["FinancialPeriod"]; 
      editFYandMonth = FinancialPeriod.Substring(2,7); 
      editCountry = Request.Params["Country"]; 
      personService = new PersonsService(); 
      metricService = new PersonalMetricsService(); 
      dealRealtionService = new DealRelationsService(); 
      employeeService = new EmployeeService(); 
      auditService = new AuditReportService(); 
      productLineService = new ProductLineService(); 
      reports = new List<AuditReport>(); 
      dealProdLineService = new DealProductLineService(); 
      dynamicColService = new DynamicColumnsService(); 
      dealValuesService = new DealValuesService(); 
      } 

Şimdi Im birçok kod üstlenmeden başlıyor ve bütün bunlar Hizmetler için Arayüz yaratmak ve Interface.If tarafından kapsüllü var Şimdi? Bu yeni anahtar kelimeyi kaçınmak mümkündür IoC konteynerini uyguluyorum.

cevap

0

bağımlılık enjeksiyonu ile Tabii bunun yerine bunu yapabilirsiniz:

private IDealsService DealsService {get; set;} 
private IDealsParser DealParser {get; set;} 
//etc... 

protected void Page_Init(object sender, EventArgs e, IDealsService dealsService, IDealsParser dealParser) 
{ 
    DealsService = dealsService; 
    DealParser = dealParser; 
    //etc... 
} 

Ve kullanmaya karar hangisi DI config

.

public class Bindings : NinjectModule 
{ 
    public override void Load() 
    { 
     Bind<IDealsService>().To<DealsService>(); 
     Bind<DealsParser>().To<DealsParser>(); 
    } 
} 

Ninject ile güzel bir öğretici http://blog.agilistic.nl/a-step-by-step-guide-to-using-ninject-for-dependancy-injection-in-c-sharp/

: Bu bağlantıları kurmak, bir Ninject örnektir
İlgili konular