有两个程序集 ( service reference) 合二为一namespace OrderSendService。两者都有课程Order:
public class Order
{
public int id { get; set; }
public string type { get; set; }
}
ServiceReference1和ServiceReference2,这些是从 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时,它显示错误:
缺少编译器所需的成员 Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo.Create
是否可以将类型ServiceReference1.Order转换为ServiceReference2.Order?
显然,没有足够的库连接
Microsoft.CSharp。由于它dynamic是内部 C# 功能,因此需要特殊支持。旧版本编译器创建的项目不包含指向 的链接
Microsoft.CSharp,因此有时必须手动添加链接。为不同的服务创建不同的命名空间。您人为地创建了一种情况,即 .NET 无法在代码中“看到”的位置区分两种类型
Order。不。