本文整理汇总了C#中System.Runtime.Serialization.ObjectManager.RaiseDeserializationEvent方法的典型用法代码示例。如果您正苦于以下问题:C# ObjectManager.RaiseDeserializationEvent方法的具体用法?C# ObjectManager.RaiseDeserializationEvent怎么用?C# ObjectManager.RaiseDeserializationEvent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Runtime.Serialization.ObjectManager
的用法示例。
在下文中一共展示了ObjectManager.RaiseDeserializationEvent方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Deserialize
//.........这里部分代码省略.........
// Header handler isn't invoked until method name is known from body fake record
// Except for SoapFault, in which case it is invoked below
if (handlerObject == null)
{
InternalST.Soap( this, "Deserialize Before SoapFault Delegate Invoke ");
handlerObject = handler(newheaders);
InternalST.Soap( this, "Deserialize after SoapFault Delegate Invoke");
}
// SoapFault creation Create a fake Pr for the handlerObject to use.
// Create a member for the fake pr with name __fault;
if ((soapFaultId > 0) && (handlerObject != null))
{
InternalST.Soap( this, "Deserialize SoapFault ");
topStack = new SerStack("Top ParseRecords");
ParseRecord pr = new ParseRecord();
pr.PRparseTypeEnum = InternalParseTypeE.Object;
pr.PRobjectPositionEnum = InternalObjectPositionE.Top;
pr.PRparseStateEnum = InternalParseStateE.Object;
pr.PRname = "Response";
topStack.Push(pr);
pr = new ParseRecord();
pr.PRparseTypeEnum = InternalParseTypeE.Member;
pr.PRobjectPositionEnum = InternalObjectPositionE.Child;
pr.PRmemberTypeEnum = InternalMemberTypeE.Field;
pr.PRmemberValueEnum = InternalMemberValueE.Reference;
pr.PRparseStateEnum = InternalParseStateE.Member;
pr.PRname = "__fault";
pr.PRidRef = soapFaultId;
topStack.Push(pr);
pr = new ParseRecord();
pr.PRparseTypeEnum = InternalParseTypeE.ObjectEnd;
pr.PRobjectPositionEnum = InternalObjectPositionE.Top;
pr.PRparseStateEnum = InternalParseStateE.Object;
pr.PRname = "Response";
topStack.Push(pr);
isTopObjectResolved = false;
}
}
// Resolve fake top object if necessary
if (!isTopObjectResolved)
{
//resolve top object
InternalST.Soap( this, "Deserialize TopObject Second Pass");
isTopObjectSecondPass = true;
topStack.Reverse();
// The top of the stack now contains the fake record
// When it is Parsed, the handler object will be substituted
// for it in ParseObject.
int topStackLength = topStack.Count();
ParseRecord pr = null;
for (int i=0; i<topStackLength; i++)
{
pr = (ParseRecord)topStack.Pop();
Parse(pr);
}
}
InternalST.Soap( this, "Deserialize Finished Parsing DoFixups");
m_objectManager.DoFixups();
if (topObject == null)
throw new SerializationException(SoapUtil.GetResourceString("Serialization_TopObject"));
if (topObject is IObjectReference) {
topObject = ((IObjectReference)topObject).GetRealObject(m_context);
}
InternalST.Soap( this, "Deserialize Exit ",topObject);
m_objectManager.RaiseDeserializationEvent();
if ((formatterEnums.FEtopObject != null) &&
(topObject is InternalSoapMessage))
{
// Convert InternalSoapMessage to SoapMessage
InternalST.Soap( this, "Deserialize SoapMessage Entry ");
InternalSoapMessage ismc = (InternalSoapMessage)topObject;
ISoapMessage smc = (ISoapMessage)formatterEnums.FEtopObject;
smc.MethodName = ismc.methodName;
smc.XmlNameSpace = ismc.xmlNameSpace;
smc.ParamNames = ismc.paramNames;
smc.ParamValues = ismc.paramValues;
smc.Headers = headers;
topObject = smc;
isTopObjectResolved = true;
InternalST.Soap( this, "Deserialize SoapMessage Exit topObject ",topObject," method name ",smc.MethodName);
}
return topObject;
}