首页 文章

WCF存储行为与对象序列化

提问于
浏览
0

最近我在WCF序列化中遇到了一个奇怪的行为 .

它是一个简单的服务,它公开一个操作 Contract 并返回一个类的对象(这个类没有用[Serializable]或[DataContract]属性修饰 .

但是,当我从客户端调用此操作时,它完美地工作,并且消费者接收该类的对象(其中包含实际数据) .

据我所知,它不应该通过电线传递,因为它无法序列化,如果我遗漏了某些东西,请告诉我 .

代码示例

public class MyService:IService
{      

    public Person GetPerson()
    {
        Person person = new Person();
        person.Name = "Brian";
        return person;
    }


}



public class Person 
{

    public string Name { get; set; }      

}
<services>

  <service name="MyService">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/MyService"/>
      </baseAddresses>
    </host>

    <endpoint address="TestService1"
              binding="basicHttpBinding"
              contract="BindingTestServer.IService" ></endpoint>

  </service>
</services>
   <behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="True"/>
      <serviceDebug includeExceptionDetailInFaults="False" />
    </behavior>
  </serviceBehaviors>
</behaviors>

1 回答

  • 0

    由于许多程序员对[DataContract]和[DataMember]属性不堪重负,因此Microsoft使数据 Contract 序列化程序处理所有类 - 即使没有任何这些属性 - 就像旧的XML序列化程序一样 .

    因此,您不必再添加数据协定或数据成员属性 - 如果不这样做,那么数据协定序列化程序将序列化您的类上的所有公共属性,就像XML序列化程序一样 .

相关问题