Wcf 使用DataContractAttribute和Serializable
我有一组用户定义的类型,它们已经实现了ISerializable接口,现在我想将它们托管在服务器端应用程序中,并通过使用DataContract属性标记它们来向客户机公开其中的一些类型 不幸的是,当我不能用DataContract属性标记同一个类时,因为它已经是ISerializable的,并且会导致运行时异常 但同时,我无法删除旧用户定义类型中的ISerializable实现 有人请帮助我如何向客户公开这些类型。。通过标记DataContract和不删除ISerializable 谢谢Wcf 使用DataContractAttribute和Serializable,wcf,Wcf,我有一组用户定义的类型,它们已经实现了ISerializable接口,现在我想将它们托管在服务器端应用程序中,并通过使用DataContract属性标记它们来向客户机公开其中的一些类型 不幸的是,当我不能用DataContract属性标记同一个类时,因为它已经是ISerializable的,并且会导致运行时异常 但同时,我无法删除旧用户定义类型中的ISerializable实现 有人请帮助我如何向客户公开这些类型。。通过标记DataContract和不删除ISerializable 谢谢 San
Sandeep这是明确禁止的——请参阅和以获得澄清。由于版本控制,一个不认识另一个:DataContract知道什么是ISerializable,但ISerializable没有关于DataContract是什么的线索 创建一个包装器怎么样 然后发送要序列化/反序列化的包装
[DataContract]
class Person
{
public Person()
{
}
public Person(string firstName, string lastName):this()
{
this.FirstName = firstName;
this.LastName = LastName;
}
[DataMember]
public string FirstName {get;set;}
[DataMember]
public string LastName { get; set; }
}
[Serializable]
class SerializablePersonWrapper : ISerializable
{
SerializablePersonWrapper(SerializationInfo info,
StreamingContext context)
{
string fname = info.GetString("FName");
//did this just for answering any questions
string lname = (string) info.GetValue("LName", typeof(string));
this.PersonItem = new Person(fname, lname);
}
public Person PersonItem {get;set;}
public void GetObjectData(SerializationInfo info,
StreamingContext context)
{
info.AddValue("FName", this.PersonItem.FirstName);
info.AddValue("LName", this.PersonItem.LastName);
}
}
你得到了什么运行时异常??这真的不应该是个问题…你好。。我收到一个异常,表示类型不能序列化,同时具有DataContractAttribute。为什么要用
DataContractAttribute
标记这些类型?您不需要它-对于WCF,使用ISerializable
就足够了。