2017-05-04 9 views
0

OK, donc je pense que j'ai une lacune fondamentale sur la façon dont Ninject fonctionne à travers les assemblages que j'espère que quelqu'un peut m'aider.MongoDB avec Ninject: résoudre les dépendances à partir du dépôt

J'ai un site Web mvc asp.net qui fait référence à un Core.dll qui contient mes objets de domaine et mon référentiel et quelques services. Mon objet domaine a un constructeur et une méthode qui ressemble à ceci

public class MyMessage{ 
    private IMyService _myService; 
    public MyMessage(IMyService myService) {...} 
    public void Send() { //uses IMyService } 
} 

Mon dépôt retourne juste un IEnumerable<MyMessage>.

Dans mon contrôleur de site Web asp.net mcv, j'injecte le référentiel et j'appelle var msg = await myRepository.GetOneAsync(id). Je veux ensuite appeler msg.send().

Le problème auquel je suis confronté est que _myService est toujours nulle lorsque l'objet revient du référentiel.

INFO AJOUTER À JOUR SUR REFERENTIEL

Le code pour myRepositry.Get ressemble à ceci:

public async Task<MyMessage> GetOneAsync(string messageId) 
=> await Collection.Find(q => q.Id == messageId).SingleOrDefaultAsync(); 

Où Collection est un IMongoCollection<MyMesage>. Donc, pour l'essentiel, le pilote Mongo 2.0 C# est en train de sérialiser l'objet pour moi et je n'arrive pas à faire en sorte que Ninject résolve les dépendances quand c'est le cas.

Si j'appelle DependencyResolver.Current.GetService<MyMessage>() cela fonctionne correctement mais jamais quand l'objet est créé via le référentiel.

Est-ce que j'essaie de réaliser? Si c'est le cas, comment? Si non, quelles sont mes options? Actuellement, je ne fais que créer une dépendance résolue MyMessage et l'hydrater en fonction de ce que le référentiel retourne.

Merci,

+0

Comment votre référentiel est-il implémenté? – rexcfnghk

+1

Votre question est un peu partout, et ne fournit pas vraiment de véritables informations pour faire une recommandation. Que voulez-vous dire par "Quand l'objet est créé par le dépôt"? Comment votre référentiel crée-t-il MyMessages? –

+0

@ErikFunkenbusch mis à jour pour ajouter des informations sur le référentiel. Est ce que ça aide? –

Répondre

-3

Vous devez changer myService à _myService comme ci-dessous:

public MyMessage(IMyService _myService) {...} 

Depuis ninject nécessite même nom d'objet à injecter par exemple.

+0

Ninject n'a pas cette exigence AFAIK – rexcfnghk

+1

Même nom d'objet dans la mesure où l'interface enregistrée avec le conteneur, mais oui, nous ne correspondons pas les noms et cela fonctionne très bien. –

+0

@rexcfnghk vous avez raison, ma mauvaise. – User3250