本文整理汇总了C#中System.Runtime.Serialization.ObjectManager类的典型用法代码示例。如果您正苦于以下问题:C# ObjectManager类的具体用法?C# ObjectManager怎么用?C# ObjectManager使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ObjectManager类属于System.Runtime.Serialization命名空间,在下文中一共展示了ObjectManager类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: SoapReader
public SoapReader(SerializationBinder binder, ISurrogateSelector selector, StreamingContext context)
{
_binder = binder;
objMgr = new ObjectManager(selector, context);
_context = context;
_surrogateSelector = selector;
_fieldIndices = new Hashtable();
}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:8,代码来源:SoapReader.cs
示例2: ObjectReader
public ObjectReader (BinaryFormatter formatter)
{
// _formatter = formatter;
_surrogateSelector = formatter.SurrogateSelector;
_context = formatter.Context;
_binder = formatter.Binder;
_manager = new ObjectManager (_surrogateSelector, _context);
_filterLevel = formatter.FilterLevel;
}
开发者ID:corngood,项目名称:mono,代码行数:10,代码来源:ObjectReader.cs
示例3: PreserveStackTrace
/// <remarks>
/// Credit to MvcContrib.TestHelper.AssertionException for PreserveStackTrace
/// </remarks>
private static void PreserveStackTrace(Exception e)
{
var ctx = new StreamingContext(StreamingContextStates.CrossAppDomain);
var mgr = new ObjectManager(null, ctx);
var si = new SerializationInfo(e.GetType(), new FormatterConverter());
e.GetObjectData(si, ctx);
mgr.RegisterObject(e, 1, si);
mgr.DoFixups();
}
开发者ID:AndyHitchman,项目名称:FluentAutomation,代码行数:13,代码来源:FluentException.cs
示例4: DeserializationContext
public DeserializationContext(BinaryFormatter formatter,
BinaryReader reader)
{
Formatter = formatter;
Reader = reader;
mTypeStore = new Hashtable();
mAssemblyStore = new Hashtable();
Manager = new ObjectManager(formatter.SurrogateSelector,
formatter.Context);
}
开发者ID:jjenki11,项目名称:blaze-chem-rendering,代码行数:10,代码来源:BinaryValueReader.cs
示例5: PreserveStackTrace
private void PreserveStackTrace(Exception exception)
{
var context = new StreamingContext(StreamingContextStates.CrossAppDomain);
var objectManager = new ObjectManager(null, context);
var serializationInfo = new SerializationInfo(exception.GetType(), new FormatterConverter());
exception.GetObjectData(serializationInfo, context);
objectManager.RegisterObject(exception, 1, serializationInfo);
objectManager.DoFixups();
}
开发者ID:rodrigoelp,项目名称:NSubstitute,代码行数:10,代码来源:RaiseEventHandler.cs
示例6: PreserveStackTrace
/// <summary>Makes sure exception stack trace would not be modify on rethrow.</summary>
public static Exception PreserveStackTrace(this Exception exception)
{
var streamingContext = new StreamingContext(StreamingContextStates.CrossAppDomain);
var objectManager = new ObjectManager(null, streamingContext);
var serializationInfo = new SerializationInfo(exception.GetType(), new FormatterConverter());
exception.GetObjectData(serializationInfo, streamingContext);
objectManager.RegisterObject(exception, 1, serializationInfo); // prepare for SetObjectData
objectManager.DoFixups(); // ObjectManager calls SetObjectData
return exception;
}
开发者ID:artikh,项目名称:CouchDude,代码行数:12,代码来源:ExceptionUtils.cs
示例7: PreserveStackTrace
public static void PreserveStackTrace(Exception e)
{
var ctx = new StreamingContext(StreamingContextStates.CrossAppDomain);
var mgr = new ObjectManager(null, ctx);
var si = new SerializationInfo(e.GetType(), new FormatterConverter());
e.GetObjectData(si, ctx);
mgr.RegisterObject(e, 1, si); // prepare for SetObjectData
mgr.DoFixups(); // ObjectManager calls SetObjectData
// voila, e is unmodified save for _remoteStackTraceString
}
开发者ID:e-COS,项目名称:cspspemu,代码行数:12,代码来源:StackTraceUtils.cs
示例8: PreserveStackTrace
public static void PreserveStackTrace(this Exception exception)
{
try
{
var context = new StreamingContext(StreamingContextStates.CrossAppDomain);
var objectManager = new ObjectManager(null, context);
var serializationInfo = new SerializationInfo(exception.GetType(), new FormatterConverter());
exception.GetObjectData(serializationInfo, context);
objectManager.RegisterObject(exception, 1, serializationInfo); // prepare for SetObjectData
objectManager.DoFixups(); // ObjectManager calls SetObjectData
}
catch (Exception)
{
//this is a best effort. if we fail to patch the stack trace just let it go
}
}
开发者ID:ranji,项目名称:NServiceBus,代码行数:17,代码来源:StackTracePreserver.cs
示例9: InternalPreserveStackTrace
private static void InternalPreserveStackTrace(Exception e)
{
// check if method is applicable (exception type should have the deserialization constructor)
var bindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
var constructor = e.GetType().GetConstructor(bindingFlags, null, new[] { typeof(SerializationInfo), typeof(StreamingContext) }, null);
if (constructor == null)
{
return;
}
var ctx = new StreamingContext(StreamingContextStates.CrossAppDomain);
var mgr = new ObjectManager(null, ctx);
var si = new SerializationInfo(e.GetType(), new FormatterConverter());
e.GetObjectData(si, ctx);
mgr.RegisterObject(e, 1, si); // prepare for SetObjectData
mgr.DoFixups(); // ObjectManager calls the deserialization constructor
// voila, e is unmodified save for _remoteStackTraceString
}
开发者ID:yallie,项目名称:zyan,代码行数:20,代码来源:ExceptionHelper.cs
示例10: PreserveStackTrace
/// <summary>
/// Modifies the specified exception's _remoteStackTraceString. I have no idea how this works, but it allows
/// for unpacking a re-throwable inner exception from a caught <see cref="TargetInvocationException"/>.
/// Read <see cref="http://stackoverflow.com/a/2085364/6560"/> for more information.
/// </summary>
public static void PreserveStackTrace(this Exception exception)
{
try
{
var ctx = new StreamingContext(StreamingContextStates.CrossAppDomain);
var mgr = new ObjectManager(null, ctx);
var si = new SerializationInfo(exception.GetType(), new FormatterConverter());
exception.GetObjectData(si, ctx);
mgr.RegisterObject(exception, 1, si); // prepare for SetObjectData
mgr.DoFixups(); // ObjectManager calls SetObjectData
// voila, exception is unmodified save for _remoteStackTraceString
}
catch (Exception ex)
{
var message = string.Format("This exception was caught while attempting to preserve the stack trace for" +
" an exception: {0} - the original exception is passed as the inner exception" +
" of this exception. This is most likely caused by the absence of a proper" +
" serialization constructor on an exception", ex);
throw new ApplicationException(message, exception);
}
}
开发者ID:CasperTDK,项目名称:RebusSnoopRefactor,代码行数:29,代码来源:ExceptionExtensions.cs
示例11: DecrementFixupsRemaining
internal void DecrementFixupsRemaining(ObjectManager manager) {
m_missingElementsRemaining--;
if (RequiresValueTypeFixup) {
UpdateDescendentDependencyChain(-1, manager);
}
}
开发者ID:ArildF,项目名称:masters,代码行数:7,代码来源:objectmanager.cs
示例12: SetObjectValue
[System.Security.SecurityCritical] // auto-generated
internal void SetObjectValue(Object obj, ObjectManager manager) {
m_object = obj;
if (obj == manager.TopObject)
m_reachable = true;
if (obj is TypeLoadExceptionHolder)
m_typeLoad = (TypeLoadExceptionHolder)obj;
if (m_markForFixupWhenAvailable) {
manager.CompleteObject(this, true);
}
}
开发者ID:wsky,项目名称:System.Runtime.Remoting,代码行数:12,代码来源:ObjectManager.cs
示例13: InitFullDeserialization
private void InitFullDeserialization()
{
this.bFullDeserialization = true;
this.stack = new SerStack("ObjectReader Object Stack");
this.m_objectManager = new ObjectManager(this.m_surrogates, this.m_context, false, this.bIsCrossAppDomain);
if (this.m_formatterConverter == null)
{
this.m_formatterConverter = new FormatterConverter();
}
}
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:10,代码来源:ObjectReader.cs
示例14: Deserialize
internal object Deserialize(HeaderHandler handler, __BinaryParser serParser, bool fCheck, bool isCrossAppDomain, IMethodCallMessage methodCallMessage)
{
if (serParser == null)
{
throw new ArgumentNullException("serParser", Environment.GetResourceString("ArgumentNull_WithParamName", new object[] { serParser }));
}
this.bFullDeserialization = false;
this.TopObject = null;
this.topId = 0L;
this.bMethodCall = false;
this.bMethodReturn = false;
this.bIsCrossAppDomain = isCrossAppDomain;
this.bSimpleAssembly = this.formatterEnums.FEassemblyFormat == FormatterAssemblyStyle.Simple;
if (fCheck)
{
CodeAccessPermission.Demand(PermissionType.SecuritySerialization);
}
this.handler = handler;
if (this.bFullDeserialization)
{
this.m_objectManager = new ObjectManager(this.m_surrogates, this.m_context, false, this.bIsCrossAppDomain);
this.serObjectInfoInit = new SerObjectInfoInit();
}
serParser.Run();
if (this.bFullDeserialization)
{
this.m_objectManager.DoFixups();
}
if (!this.bMethodCall && !this.bMethodReturn)
{
if (this.TopObject == null)
{
throw new SerializationException(Environment.GetResourceString("Serialization_TopObject"));
}
if (this.HasSurrogate(this.TopObject.GetType()) && (this.topId != 0L))
{
this.TopObject = this.m_objectManager.GetObject(this.topId);
}
if (this.TopObject is IObjectReference)
{
this.TopObject = ((IObjectReference) this.TopObject).GetRealObject(this.m_context);
}
}
if (this.bFullDeserialization)
{
this.m_objectManager.RaiseDeserializationEvent();
}
if (handler != null)
{
this.handlerObject = handler(this.headers);
}
if (this.bMethodCall)
{
object[] topObject = this.TopObject as object[];
this.TopObject = this.binaryMethodCall.ReadArray(topObject, this.handlerObject);
}
else if (this.bMethodReturn)
{
object[] returnA = this.TopObject as object[];
this.TopObject = this.binaryMethodReturn.ReadArray(returnA, methodCallMessage, this.handlerObject);
}
return this.TopObject;
}
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:63,代码来源:ObjectReader.cs
示例15: FixupImpl
protected override void FixupImpl (ObjectManager manager) {
ObjectToBeFixed.SetMemberValue (manager, _memberName, ObjectRequired.ObjectInstance);
}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:3,代码来源:ObjectManager.cs
示例16: UpdateData
/*==================================UpdateData==================================
**Action: Update the data in the object holder. This should be called when the object
** is finally registered. Presumably the ObjectHolder was created to track
** some dependencies or preregistered fixups and we now need to actually record the
** object and other associated data. We take this opportunity to set the flags
** so that we can do some faster processing in the future.
**Returns: void
**Arguments: obj -- The object being held by this object holder. (This should no longer be null).
** info --The SerializationInfo associated with this object, only required if we're doing delayed fixups.
** surrogate -- The surrogate handling this object. May be null.
** idOfContainer -- The id of the object containing this one if this is a valuetype.
** member -- the MemberInfo of this object's position in it's container if this is a valuetype.
** manager -- the ObjectManager being used to track these ObjectHolders.
**Exceptions: None. Asserts only.
==============================================================================*/
internal virtual void UpdateData(Object obj, SerializationInfo info, ISerializationSurrogate surrogate, long idOfContainer, FieldInfo field, int[] arrayIndex, ObjectManager manager) {
BCLDebug.Assert(obj!=null,"obj!=null");
BCLDebug.Assert(m_id>0,"m_id>0");
//Record the fields that we can.
SetObjectValue(obj, manager);
m_serInfo = info;
m_surrogate = surrogate;
if (idOfContainer!=0 && ((field!=null && field.FieldType.IsValueType) || arrayIndex!=null)) {
if (idOfContainer == m_id) {
throw new SerializationException(Environment.GetResourceString("Serialization_ParentChildIdentical"));
}
m_valueFixup = new ValueTypeFixupInfo(idOfContainer, field, arrayIndex);
}
SetFlags();
if (RequiresValueTypeFixup) {
UpdateDescendentDependencyChain(m_missingElementsRemaining, manager);
}
}
开发者ID:ArildF,项目名称:masters,代码行数:37,代码来源:objectmanager.cs
示例17: DoFixups
public bool DoFixups (bool asContainer, ObjectManager manager, bool strict)
{
BaseFixupRecord prevFixup = null;
BaseFixupRecord fixup = asContainer ? FixupChainAsContainer : FixupChainAsRequired;
bool allFixed = true;
while (fixup != null)
{
if (fixup.DoFixup (manager, strict))
{
UnchainFixup (fixup, prevFixup, asContainer);
if (asContainer) fixup.ObjectRequired.RemoveFixup (fixup, false);
else fixup.ObjectToBeFixed.RemoveFixup (fixup, true);
}
else
{
prevFixup = fixup;
allFixed = false;
}
fixup = asContainer ? fixup.NextSameContainer : fixup.NextSameRequired;
}
return allFixed;
}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:24,代码来源:ObjectManager.cs
示例18: SetMemberValue
public void SetMemberValue (ObjectManager manager, string memberName, object value)
{
if (Info == null) throw new SerializationException ("Cannot perform fixup");
Info.AddValue (memberName, value, value.GetType());
}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:5,代码来源:ObjectManager.cs
示例19: SetArrayValue
public void SetArrayValue (ObjectManager manager, object value, int[] indices)
{
((Array)ObjectInstance).SetValue (value, indices);
}
开发者ID:calumjiao,项目名称:Mono-Class-Libraries,代码行数:4,代码来源:ObjectManager.cs
示例20: AddFixup
/*===================================AddFixup===================================
**Action: Note a fixup that has to be done before this object can be completed.
** Fixups are things that need to happen when other objects in the graph
** are added. Dependencies are things that need to happen when this object
** is added.
**Returns: void
**Arguments: fixup -- The fixup holder containing enough information to complete the fixup.
**Exceptions: None.
==============================================================================*/
internal virtual void AddFixup(FixupHolder fixup, ObjectManager manager) {
if (m_missingElements==null) {
m_missingElements = new FixupHolderList();
}
m_missingElements.Add(fixup);
m_missingElementsRemaining++;
if (RequiresValueTypeFixup) {
UpdateDescendentDependencyChain(1, manager);
}
}
开发者ID:ArildF,项目名称:masters,代码行数:20,代码来源:objectmanager.cs
注:本文中的System.Runtime.Serialization.ObjectManager类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论