好的,我今天早些时候写了这个问题,但我决定删除它,因为我觉得这个问题措辞不是很好。我决定等到我有更多时间在家里写作:)。 我刚刚开始使用IOC / DI。我已经对使用哪个框架进行了一些研究,并决定给StructureMap一个旋转。以下是我使用的第一个教程: Derik Whittaker http://dimecasts.net/Casts/CastDetails/39。
无论如何,我把一切都像梦一样,一切都在同一个项目中。 这是我的示例代码:
[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
}
无论如何,如果我将上面的项目创建到命令行程序中并执行以下操作:
var consumer = ObjectFactory.GetInstance<IConsumer>();
完美无缺。没问题。当我在解决方案中创建一个单独的项目,然后将上面的项目更改为DLL。我收到以下错误:
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.
起初我认为可能StructureMap.Config文件没有进入新项目bin文件夹,但事实并非如此。它就在那里。 Everythign编译很好,这个问题在运行时发生。我确信解决方案很容易,但对于我的生活,我无法弄清楚什么是错的。任何帮助都会非常感激。
谢谢, NCAGE
答案 0 :(得分:0)
我带着我所有的一天来解决这个问题。起初我以为我只是一个白痴,我错过了一些愚蠢的东西。好吧,我不是。我认为这与不同的项目有关,但事实并非如此。我创建了一个新的控制台应用程序,它使用了我的StructureMapped DLL(如果只创造一个术语;))。无论如何,在试图花一整天来解决这个问题后,我终于发现了一篇描述问题的帖子。它是MSTest中的一个怪胎(我的项目我遇到了问题是在MSTest中创建的)。 Xunit来了。这篇文章描述了创建教程视频的同一个人的问题: