Есть две сборки (service reference) в одном namespace OrderSendService. Обе имеют класс Order
public class Order
{
public int id { get; set; }
public string type { get; set; }
}
ServiceReference1 и ServiceReference2, это Service references, полученные на основе wsdl. Мне нужно использовать оба этих референса. Сейчас формируется объект ServiceReference1.Order и отправляется методом ServiceReference1.Send(). Возникла необходимость для отправки использовать ServiceReference2.Send() и передавать этот же объект (при этом ServiceReference2.Send() принимает объекты из своего namespace)
Возможно ли в зависимости от условия, установить тип объекту? Использую такой код:
dynamic obj;
if (condition)
{
obj = new ServiceReference1.Order[10];
}
else
{
obj = new ServiceReference2.Order[10];
}
(obj будет передаваться в методе Send() одного из wsdl-сервисов).
Неймспейсы сервисов:
OrderSendService.ServiceReference1
OrderSendService.ServiceReference2
При попытке доступа к свойству obj[0].id VS 2015 показывает ошибку:
Missing compiler required member
Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create
И возможно ли привести тип ServiceReference1.Order к ServiceReference2.Order?
Ответ
Судя по всему, не хватало подключения библиотеки Microsoft.CSharp. Поскольку dynamic — внутри-C#-овская фича, ей нужна специальная поддержка.
Проекты, созданные старыми версиями компилятора, не содержат ссылки на Microsoft.CSharp, поэтому ссылку иногда приходится добавлять вручную.
Комментариев нет:
Отправить комментарий