В следующем коде я просто хотел бы, чтобы 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)
. Я все равно хотел бы знать, почему в этом конкретном случае это не удается.
Ошибка, кажется, говорит вам, что вы подключаете объект 'IMyService' к интерфейсу' IMyService'. Можете ли вы проверить, определяете ли переменную как, например, тип класса «MyService», ошибка все еще воспроизводится? – HuorSwords
В этом случае я пытаюсь подключить его к прокси-классу, поэтому для этого нет конкретного класса. –
Но ... Прокси-класс должен реализовывать 'IMyService', не так ли? Я уверен, что мне что-то не хватает, извините. – HuorSwords