Sehen Sie sich den folgenden Code von here an.
Es geht darum, zirkuläre Referenzen in einem Datenkontrakt (Objektmodell, Objektgraph, Domänenmodell) beim Serialisieren in wcf zu erhalten.Endlosschleife in einem Codebeispiel bei Serialisierung
class ReferencePreservingDataContractSerializerOperationBehavior
:DataContractSerializerOperationBehavior
{
public ReferencePreservingDataContractSerializerOperationBehavior(
OperationDescription operationDescription)
: base(operationDescription) { }
public override XmlObjectSerializer CreateSerializer(
Type type, string name, string ns, IList<Type> knownTypes)
{
return CreateDataContractSerializer(type, name, ns, knownTypes);
}
private static XmlObjectSerializer CreateDataContractSerializer(
Type type, string name, string ns, IList<Type> knownTypes)
{
return CreateDataContractSerializer(type, name, ns, knownTypes);
}
public override XmlObjectSerializer CreateSerializer(
Type type, XmlDictionaryString name, XmlDictionaryString ns,
IList<Type> knownTypes)
{
return new DataContractSerializer(type, name, ns, knownTypes,
0x7FFF /*maxItemsInObjectGraph*/,
false/*ignoreExtensionDataObject*/,
true/*preserveObjectReferences*/,
null/*dataContractSurrogate*/);
}
}
Ist das nicht CreateDataContractSerializer
eine Endlosschleife Erzeugen (Stackoverflow) - und damit auch die vorhergehenden CreateSerializer
Methode?
private static XmlObjectSerializer CreateDataContractSerializer(
Type type, string name, string ns, IList<Type> knownTypes)
{
return CreateDataContractSerializer(type, name, ns, knownTypes);
}
Nun werden diese Methoden vielleicht nicht verwendet? Was fehlt mir hier?