Roy*_*mir 3 c# wcf serialization
我上课了
[DataContract]
public class Car
{
public bool pbIsHatchBack;
string prSt = "royi";
}
Run Code Online (Sandbox Code Playgroud)
我想用BinaryFormatter序列化它:
BinaryFormatter binFormat = new BinaryFormatter();
Stream fStream = new FileStream("c:\\CarData.dat", FileMode.Create, FileAccess.Write, FileShare.None);
binFormat.Serialize(fStream, carObj);
fStream.Close();
Run Code Online (Sandbox Code Playgroud)
但你得到这个错误
在程序集'ConsoleApplication2中输入'SerializationTypes + Car',Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'未标记为可序列化.
如果我删除[ DataContract ]并用[ Serializable ] 替换它确定.但为什么呢?
WCF如何在场景后面做(当tcpBinding?)?
为什么我不能使用DataContract ???
WCF不使用BinaryFormatter序列化它的对象,它既可采用DataContractSerializer(默认)或一些其它串行(的XmlSerializer,DataContractJsonSerializer等等).BinaryFormatter在WCF之前发布(在.NET Framework 1.0,IIRC中),因此不了解[DataContract]/ [DataMember]属性(在.NET Framework 3.0中与WCF一起发布).
在netTcpBindingWCF上仍然使用DataContractSerializer,但不是使用"普通"XML读取器/写入器,而是使用二进制感知XML读取器/写入器,这就是我们在WCF中使用二进制编码的方式.
WCF序列化程序了解该[Serializable]属性,因此您也可以将其与WCF一起使用.或者您也可以使用这两个属性,如果您希望类型可以序列化,BinaryFormatter但使用[DC]/[DM]属性为您提供的更细粒度的控件.
| 归档时间: |
|
| 查看次数: |
2904 次 |
| 最近记录: |