2013-05-29 4 views
1

В следующем коде я просто хотел бы, чтобы StructureMap (v2.6.4.1) сопоставлял все запросы для IMyService с конкретным экземпляром myService. Вот код, который терпит неудачу:Как получить StructureMap для разрешения конкретного экземпляра?

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.IsThis и ObjectFactory.Inject, между прочим, все без успеха.

Что я делаю неправильно?

Update:

В моем случае «MYSERVICE» присваивается экземпляр возвращается из System.ServiceModel.ChannelFactory<IMyService>.CreateChannel(), который, во время выполнения, отладчик показывает, что она имеет тип System.Runtime.Remoting.Proxies.__TransparentProxy.

Я нашел, что он работает, если я использую Use(() => myService). Я все равно хотел бы знать, почему в этом конкретном случае это не удается.

+0

Ошибка, кажется, говорит вам, что вы подключаете объект 'IMyService' к интерфейсу' IMyService'. Можете ли вы проверить, определяете ли переменную как, например, тип класса «MyService», ошибка все еще воспроизводится? – HuorSwords

+0

В этом случае я пытаюсь подключить его к прокси-классу, поэтому для этого нет конкретного класса. –

+0

Но ... Прокси-класс должен реализовывать 'IMyService', не так ли? Я уверен, что мне что-то не хватает, извините. – HuorSwords

ответ

1

Вы оставили ключевую информацию: что именно вы храните в переменной myService? Из сообщения об ошибке похоже, что существует несоответствие типа.

+0

В моем случае это экземпляр, возвращенный из 'System.ServiceModel.ChannelFactory .CreateChannel()', который во время выполнения отладчик показывает, что он имеет тип 'System.Runtime.Remoting.Proxies .__ TransparentProxy'. –

Смежные вопросы