如何让StructureMap解析一个特定的实例?

本文关键字:一个 实例 StructureMap | 更新日期: 2023-09-27 18:15:52

在下面的代码中,我只希望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)。我还是想知道为什么它在这个特殊情况下失败了。

如何让StructureMap解析一个特定的实例?

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