1

在下面的代码中,我只想将 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). 我仍然想知道为什么它在这种特殊情况下会失败。

4

1 回答 1

1

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

于 2013-05-30T03:42:45.277 回答