scripts
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
using System;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Remoting;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace System
|
||||
{
|
||||
// Token: 0x0200065A RID: 1626
|
||||
[Serializable]
|
||||
internal class DelegateSerializationHolder : ISerializable, IObjectReference
|
||||
{
|
||||
// Token: 0x06003DFE RID: 15870 RVA: 0x000D2F44 File Offset: 0x000D1144
|
||||
private DelegateSerializationHolder(SerializationInfo info, StreamingContext ctx)
|
||||
{
|
||||
DelegateSerializationHolder.DelegateEntry delegateEntry = (DelegateSerializationHolder.DelegateEntry)info.GetValue("Delegate", typeof(DelegateSerializationHolder.DelegateEntry));
|
||||
int num = 0;
|
||||
DelegateSerializationHolder.DelegateEntry delegateEntry2 = delegateEntry;
|
||||
while (delegateEntry2 != null)
|
||||
{
|
||||
delegateEntry2 = delegateEntry2.delegateEntry;
|
||||
num++;
|
||||
}
|
||||
if (num == 1)
|
||||
{
|
||||
this._delegate = delegateEntry.DeserializeDelegate(info);
|
||||
}
|
||||
else
|
||||
{
|
||||
Delegate[] array = new Delegate[num];
|
||||
delegateEntry2 = delegateEntry;
|
||||
for (int i = 0; i < num; i++)
|
||||
{
|
||||
array[i] = delegateEntry2.DeserializeDelegate(info);
|
||||
delegateEntry2 = delegateEntry2.delegateEntry;
|
||||
}
|
||||
this._delegate = Delegate.Combine(array);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06003DFF RID: 15871 RVA: 0x000D2FE4 File Offset: 0x000D11E4
|
||||
public static void GetDelegateData(Delegate instance, SerializationInfo info, StreamingContext ctx)
|
||||
{
|
||||
Delegate[] invocationList = instance.GetInvocationList();
|
||||
DelegateSerializationHolder.DelegateEntry delegateEntry = null;
|
||||
for (int i = 0; i < invocationList.Length; i++)
|
||||
{
|
||||
Delegate @delegate = invocationList[i];
|
||||
string text = ((@delegate.Target == null) ? null : ("target" + i));
|
||||
DelegateSerializationHolder.DelegateEntry delegateEntry2 = new DelegateSerializationHolder.DelegateEntry(@delegate, text);
|
||||
if (delegateEntry == null)
|
||||
{
|
||||
info.AddValue("Delegate", delegateEntry2);
|
||||
}
|
||||
else
|
||||
{
|
||||
delegateEntry.delegateEntry = delegateEntry2;
|
||||
}
|
||||
delegateEntry = delegateEntry2;
|
||||
if (@delegate.Target != null)
|
||||
{
|
||||
info.AddValue(text, @delegate.Target);
|
||||
}
|
||||
}
|
||||
info.SetType(typeof(DelegateSerializationHolder));
|
||||
}
|
||||
|
||||
// Token: 0x06003E00 RID: 15872 RVA: 0x000D308C File Offset: 0x000D128C
|
||||
public void GetObjectData(SerializationInfo info, StreamingContext context)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
// Token: 0x06003E01 RID: 15873 RVA: 0x000D3094 File Offset: 0x000D1294
|
||||
public object GetRealObject(StreamingContext context)
|
||||
{
|
||||
return this._delegate;
|
||||
}
|
||||
|
||||
// Token: 0x040018C4 RID: 6340
|
||||
private Delegate _delegate;
|
||||
|
||||
// Token: 0x0200065B RID: 1627
|
||||
[Serializable]
|
||||
private class DelegateEntry
|
||||
{
|
||||
// Token: 0x06003E02 RID: 15874 RVA: 0x000D309C File Offset: 0x000D129C
|
||||
public DelegateEntry(Delegate del, string targetLabel)
|
||||
{
|
||||
this.type = del.GetType().FullName;
|
||||
this.assembly = del.GetType().Assembly.FullName;
|
||||
this.target = targetLabel;
|
||||
this.targetTypeAssembly = del.Method.DeclaringType.Assembly.FullName;
|
||||
this.targetTypeName = del.Method.DeclaringType.FullName;
|
||||
this.methodName = del.Method.Name;
|
||||
}
|
||||
|
||||
// Token: 0x06003E03 RID: 15875 RVA: 0x000D3120 File Offset: 0x000D1320
|
||||
public Delegate DeserializeDelegate(SerializationInfo info)
|
||||
{
|
||||
object obj = null;
|
||||
if (this.target != null)
|
||||
{
|
||||
obj = info.GetValue(this.target.ToString(), typeof(object));
|
||||
}
|
||||
Assembly assembly = Assembly.Load(this.assembly);
|
||||
Type type = assembly.GetType(this.type);
|
||||
Delegate @delegate;
|
||||
if (obj != null)
|
||||
{
|
||||
if (RemotingServices.IsTransparentProxy(obj))
|
||||
{
|
||||
Assembly assembly2 = Assembly.Load(this.targetTypeAssembly);
|
||||
Type type2 = assembly2.GetType(this.targetTypeName);
|
||||
if (!type2.IsInstanceOfType(obj))
|
||||
{
|
||||
throw new RemotingException("Unexpected proxy type.");
|
||||
}
|
||||
}
|
||||
@delegate = Delegate.CreateDelegate(type, obj, this.methodName);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assembly assembly3 = Assembly.Load(this.targetTypeAssembly);
|
||||
Type type3 = assembly3.GetType(this.targetTypeName);
|
||||
@delegate = Delegate.CreateDelegate(type, type3, this.methodName);
|
||||
}
|
||||
return @delegate;
|
||||
}
|
||||
|
||||
// Token: 0x040018C5 RID: 6341
|
||||
private string type;
|
||||
|
||||
// Token: 0x040018C6 RID: 6342
|
||||
private string assembly;
|
||||
|
||||
// Token: 0x040018C7 RID: 6343
|
||||
public object target;
|
||||
|
||||
// Token: 0x040018C8 RID: 6344
|
||||
private string targetTypeAssembly;
|
||||
|
||||
// Token: 0x040018C9 RID: 6345
|
||||
private string targetTypeName;
|
||||
|
||||
// Token: 0x040018CA RID: 6346
|
||||
private string methodName;
|
||||
|
||||
// Token: 0x040018CB RID: 6347
|
||||
public DelegateSerializationHolder.DelegateEntry delegateEntry;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user