2009-09-03 8 views
0

Ok, j'ai écrit cette question plus tôt aujourd'hui mais j'ai décidé de la supprimer parce que je pensais que la question n'était pas très bien formulée. J'ai décidé d'attendre jusqu'à ce que j'ai plus de temps pour le composer à la maison :). Je commence juste avec IOC/DI. J'ai fait quelques recherches sur le framework à utiliser et j'ai décidé de donner une structure à StructureMap. Ce qui suit est le premier tutoriel que j'ai utilisé: http://dimecasts.net/Casts/CastDetails/39 par Derik Whittaker.StructureMap très basique?

De toute façon, tout fonctionne comme un rêve avec TOUT est hébergé dans le même projet. Voici mon exemple de code:

[PluginFamily("SMTest",IsSingleton=true)] 
public interface IVehicle 
{ 
    byte TopSpeed {set;get;} 
    byte MPG { set; get; } 

} 

[Pluggable("SMTest")] 
public class Car : IVehicle 
{ 
    private byte mTopSpeed; 
    private byte mMPG; 
    #region IVehicle Members 

    byte IVehicle.TopSpeed 
    { 
     get 
     { 
      return mTopSpeed; 
     } 
     set 
     { 
      mTopSpeed = value; 
     } 
    } 

    public interface IConsumer 
    { 

    IVehicle Car { get; set; } 
    } 

    [Pluggable("SMTest")] 
public class Consumer : StructureMapBasic.IConsumer 
{ 
    private IVehicle mCar; 

    public Consumer(IVehicle lcar) 
    { 
     Car = lcar;  
    } 

    public IVehicle Car { set; get; } 


    byte IVehicle.MPG 
    { 
     get 
     { 
      return mMPG; 
     } 
     set 
     { 
      mMPG = value; 
     } 
    } 

    #endregion 
} 

donc de toute façon, si je crée le projet ci-dessus dans un programme de ligne de commande et procédez comme suit:

var consumer = ObjectFactory.GetInstance<IConsumer>(); 

Il fonctionne parfaitement. Aucun problème du tout. Lorsque je crée un projet séparé dans la solution, puis changez le projet ci-dessus en une DLL. Je reçois l'erreur suivante:

Test method StructureMapBasic.ConsumerTest.ConsumerConstructorTest 
threw exception: StructureMap.StructureMapException: StructureMap 
Exception Code: 202 No Default Instance defined for PluginFamily 
StructureMapBasic.IConsumer, StructureMapBasic, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=null. 

Au début, je pensais peut-être le fichier StructureMap.Config n'a pas obtenu dans le nouveau dossier bin projets, mais qui n'a pas été le cas. C'était là. Everythign compile très bien ce problème arrive à l'exécution. Je suis sûr que la solution est très facile mais pour la vie de moi je ne peux pas comprendre ce qui ne va pas. Toute aide serait très appréciée.

Merci, COEEP

Répondre

0

Je me ont emmené toute la journée friggn pour comprendre cela. Au début, je pensais que j'étais juste un idiot et qu'il me manquait quelque chose de stupide. Eh bien, je n'étais pas. Je pensais que c'était lié à différents projets, mais ce n'était pas le cas. J'ai créé une nouvelle application de console qui a consommé ma DLL StructureMapped (si juste inventé un terme;)). Quoi qu'il en soit, après avoir essayé de passer toute la journée sur ce problème, j'ai finalement trouvé un message qui décrivait le problème. c'est un bug bizarre dans MSTest (mon projet j'avais des problèmes avec a été créé dans MSTest). Xunit ici je viens. Voici un article qui décrit le problème du même type qui a créé la vidéo du didacticiel:

http://devlicio.us/blogs/derik_whittaker/archive/2008/07/23/mstest-why-i-hate-you-you-cause-me-too-much-friction.aspx