如何让StructureMap解析特定实例?

时间:2013-05-29 20:28:28

标签: c# structuremap

在下面的代码中,我只想将StructureMap(v2.6.4.1)映射到IMyService的所有请求到特定的myService实例。这是失败的代码:

IMyService myService = ...;

ObjectFactory.Configure(r =>
{
    r.For<IMyService>().Use(myService)
});

IMyService resolvedInstance = ObjectFactory.GetInstance<IMyService>();

Configure的调用失败并显示错误:

Type Instance 'dfa538d3-593d-4ca9-9c39-4b3538023483' (Object:  
MyServices.IMyService) cannot be plugged into type MyServices.IMyService, 
MyServices, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

我尝试过使用.Singleton().TheDefault.IsThisObjectFactory.Inject等等,都没有成功。

我做错了什么?

更新

在我的情况下,“myService”被分配了一个从System.ServiceModel.ChannelFactory<IMyService>.CreateChannel()返回的实例,在运行时,调试器显示它是System.Runtime.Remoting.Proxies.__TransparentProxy类型。

我发现如果我使用Use(() => myService)它会有效。我仍然想知道为什么它在这种特殊情况下失败了。

1 个答案:

答案 0 :(得分:1)

您遗漏了一个关键细节:您究竟在myService变量中存储了什么?从错误消息中,看起来存在类型不匹配。