2009-09-03 25 views
0

Ok, ich habe diese Frage heute früher geschrieben, aber ich habe mich entschieden, sie zu löschen, weil ich dachte, die Frage sei nicht gut formuliert. Ich entschied mich zu warten, bis ich mehr Zeit hatte, es zu Hause zu komponieren :). Ich fange gerade mit IOC/DI an. Ich habe einige Nachforschungen darüber angestellt, welchen Rahmen ich verwenden soll und habe beschlossen, StructureMap einen Dreh zu geben. Das Folgende ist das erste Tutorial, das ich verwendet habe: http://dimecasts.net/Casts/CastDetails/39 von Derik Whittaker.Sehr einfache Strukturkarte?

Wie auch immer, ich habe alles funktioniert wie ein Traum mit ALLEN wird im selben Projekt gehostet. Hier ist mein Beispielcode:

[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 
} 

So irgendwie, wenn ich das Projekt über in ein Kommandozeilen-Programm und gehen Sie wie folgt erstellen:

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

Es funktioniert perfekt. Überhaupt keine Probleme. Wenn ich ein separates Projekt in der Lösung erstellen und dann das obige Projekt in eine DLL ändern. Ich erhalte den folgenden Fehler:

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. 

Zuerst dachte ich, vielleicht die StructureMap.Config Datei nicht in die neuen Projekten Binärordner bekommen hat, aber das war nicht der Fall. Es war da. Everything kompiliert nur gut, dieses Problem passiert zur Laufzeit. Ich bin sicher, dass die Lösung sehr einfach ist, aber für das Leben von mir kann ich nicht herausfinden, was schief läuft. Jede Hilfe wäre sehr dankbar.

Danke, NCAGE

Antwort

0

Ich nahm mir alles friggn Tag um dies herauszufinden. Zuerst dachte ich, ich wäre nur ein Idiot und mir fehlt etwas Dummes. Nun, ich war es nicht. Ich dachte, es wäre mit verschiedenen Projekten verbunden, aber das war es nicht. Ich habe eine neue Konsolenanwendung erstellt, die meine StructureMapped DLL (wenn nur ein Begriff geprägt wurde;)) verbraucht hat. Wie auch immer, nach dem Versuch, den ganzen Tag auf dieses Problem zu verbringen, fand ich endlich einen Beitrag, der das Problem beschrieb. Es ist ein Freakn Bug in MSTest (mein Projekt, mit dem ich Probleme hatte, wurde in MSTest erstellt). Xunit hier komme ich. Hier ist ein Beitrag, der das Problem von demselben Typen beschreibt, der das Tutorial-Video erstellt hat:

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

Verwandte Themen