Files
Dec2017-Script-Dump/protobuf3/Reflection/OneofAccessor.cs
T
2026-06-04 11:42:34 +02:00

59 lines
1.5 KiB
C#

using System;
using System.Reflection;
namespace Google.Protobuf.Reflection
{
// Token: 0x02000065 RID: 101
public sealed class OneofAccessor
{
// Token: 0x060005DE RID: 1502 RVA: 0x00014ACC File Offset: 0x00012CCC
internal OneofAccessor(PropertyInfo caseProperty, MethodInfo clearMethod, OneofDescriptor descriptor)
{
if (!caseProperty.CanRead)
{
throw new ArgumentException("Cannot read from property");
}
this.descriptor = descriptor;
this.caseDelegate = ReflectionUtil.CreateFuncIMessageT<int>(caseProperty.GetGetMethod());
this.descriptor = descriptor;
this.clearDelegate = ReflectionUtil.CreateActionIMessage(clearMethod);
}
// Token: 0x170001A8 RID: 424
// (get) Token: 0x060005DF RID: 1503 RVA: 0x00014B1D File Offset: 0x00012D1D
public OneofDescriptor Descriptor
{
get
{
return this.descriptor;
}
}
// Token: 0x060005E0 RID: 1504 RVA: 0x00014B25 File Offset: 0x00012D25
public void Clear(IMessage message)
{
this.clearDelegate(message);
}
// Token: 0x060005E1 RID: 1505 RVA: 0x00014B34 File Offset: 0x00012D34
public FieldDescriptor GetCaseFieldDescriptor(IMessage message)
{
int num = this.caseDelegate(message);
if (num > 0)
{
return this.descriptor.ContainingType.FindFieldByNumber(num);
}
return null;
}
// Token: 0x04000254 RID: 596
private readonly Func<IMessage, int> caseDelegate;
// Token: 0x04000255 RID: 597
private readonly Action<IMessage> clearDelegate;
// Token: 0x04000256 RID: 598
private OneofDescriptor descriptor;
}
}