2010-07-23 23 views
1
public void Express(Expression<Func<User, bool>> express) 
{ 
    BLL.Manager.ILogManager logs = BLL.Container.ObjectContainer.getObject<BLL.Manager.ILogManager>(); 
    logs.GetAll(1); 
    var total = logs.LastPageTotal; 
} 

Comme le code ci-dessus, je dois savoir ILogManager la classe de mise en œuvre, je ne sais que l'information reflète la manière, mais dans la méthode de type défini est le type d'interfaceobtenue par la méthode de réflexion de la classe de mise en œuvre

J'ai été through the IL reflecting some call information, appelez l'information dont j'ai besoin pour obtenir à la fin ceux par quelle classe appeler.

+5

J'ai essayé de lire ceci quelques fois, et pour le moment je n'ai aucune idée de ce qui est demandé. Pourriez-vous essayer de l'éditer pour être plus clair? –

+0

@Dreampuf pourrait-il dire qu'il veut connaître l'implémentation concrète de 'ILogManager'? –

+0

Oui, comme @Daniel A. White a dit, – Dreampuf

Répondre

0

J'ai besoin de savoir ILogManager la classe d'implémentation

Si je comprends bien:

  • Vous avez un code qui utilise une variable ILogManager
  • Vous voulez savoir quelle classe implémente ILogManager

Vous pouvez insérer un appel à logs.GetType() dans le code; cela vous indiquera le type de classe qui implémente ILogManager. Vous pouvez également indiquer quelles classes implémentent une interface donnée de la même manière que Reflector: en chargeant tous les assemblages possibles, en examinant les types dans ces assemblys et en enregistrant ceux qui implémentent ILogManager.

+0

Je ne peux pas modifier le code à l'intérieur de la méthode, il est impossible d'insérer log.GetType(). En outre, si plusieurs ILogManager implémentent la correspondance? – Dreampuf

+0

Si vous ne pouvez pas modifier le code alors ma deuxième suggestion pourrait aider. Qu'essayez-vous de faire? –

+0

oui ... reflétant toutes les interfaces, puis recherchez sa classe d'implémentation – Dreampuf