2017-07-14 1 views
-1

Je suis héritant ApiController et ci-dessous est ma méthode ExecuteAsync surchargée par l'injection de dépendance,Initialiser abstrait objet de classe en utilisant l'injection de dépendance

public abstract class BaseController : ApiController 
{ 
    private IMyService _myService; 
    public PersonModel person; 
    protected BaseController(IMyService myService) 
    { 
     _myService = myService; 
    } 

    public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken) 
    { 
     _myService.Initialize(person); 
    } 
} 

Ceci est mon interface de service,

public interface IMyService 
{ 
    HttpResponseMessage Initialize(PersonModel person); 
} 

est ici la classe,

public class MyService : IMyService 
{ 
    public HttpResponseMessage Initialize(PersonModel person) 
    { 
     //Initializing person model from db 
     return new HttpResponseMessage(HttpStatusCode.OK); 
    } 
} 

Lorsque j'exécute cette méthode, objet personne dans le La classe BaseController est toujours nulle. Que dois-je changer pour initialiser l'objet dans la classe abstraite?

+2

Je suppose que vous faites quelque chose comme 'person = new PersonModel()' dans 'Initialize'. Cela ne marchera pas du tout. Vous en aurez besoin pour * renvoyer * un modèle de personne, ou (une solution de contournement laide), utilisez 'ref'. – Rob

+0

Quel cadre de dépendance utilisez-vous? – ArunGeorge

+0

@ArunGeorge Autofac – dev999

Répondre