0
我正在调用一个用户定义类型作为参数的web服务。下面的代码工作正常,因为在调用服务的时候,类型强制转换(用于objectParameter)是使用已知类型完成的。对于未知类型如何将对象转换回原始类型?是否可以从要调用的方法的参数中获取类型信息,然后进行转换?序列化和动态类型转换
// web service proxy
Service1 ser=new Service1();
CompositeType myCompositeType=new CompositeType();
myCompositeType.StringValue = "arjun";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(@"d:/MyFile.bin",
FileMode.Create,
FileAccess.Write, FileShare.None);
formatter.Serialize(stream, myCompositeType);
stream.Close();
IFormatter formatter1 = new BinaryFormatter();
Stream stream1 = new FileStream(@"d:/MyFile.bin",
FileMode.Open,
FileAccess.Read,
FileShare.Read);
object objectParameter= formatter1.Deserialize(stream1);
//call to remote webservice . casting is possible because the type is known
// it doesn't work: ser.GetDataUsingDataContract(objectParameter);
ser.GetDataUsingDataContract((CompositeType)objectParameter);
你有两个已知的类compositeType和compositetype2是类型castted。什么如果你根本不知道类型信息。 – arjun