Wcf 使用DataContractAttribute和Serializable

Wcf 使用DataContractAttribute和Serializable,wcf,Wcf,我有一组用户定义的类型,它们已经实现了ISerializable接口,现在我想将它们托管在服务器端应用程序中,并通过使用DataContract属性标记它们来向客户机公开其中的一些类型 不幸的是,当我不能用DataContract属性标记同一个类时,因为它已经是ISerializable的,并且会导致运行时异常 但同时,我无法删除旧用户定义类型中的ISerializable实现 有人请帮助我如何向客户公开这些类型。。通过标记DataContract和不删除ISerializable 谢谢 San

我有一组用户定义的类型,它们已经实现了ISerializable接口,现在我想将它们托管在服务器端应用程序中,并通过使用DataContract属性标记它们来向客户机公开其中的一些类型

不幸的是,当我不能用DataContract属性标记同一个类时,因为它已经是ISerializable的,并且会导致运行时异常

但同时,我无法删除旧用户定义类型中的ISerializable实现

有人请帮助我如何向客户公开这些类型。。通过标记DataContract和不删除ISerializable

谢谢
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
就足够了。