• Jon Skeet's avatar
    Revamp to reflection. · 53c399a1
    Jon Skeet authored
    Changes in brief:
    1. Descriptor is now the entry point for all reflection.
    2. IReflectedMessage has gone; there's now a Descriptor property in IMessage, which is explicitly implemented (due to the static property).
    3. FieldAccessorTable has gone away
    4. IFieldAccessor and OneofFieldAccessor still exist; we *could* put the functionality straight into FieldDescriptor and OneofDescriptor... I'm unsure about that.
    5. There's a temporary property MessageDescriptor.FieldAccessorsByFieldNumber to make the test changes small - we probably want this to go away
    6. Discovery for delegates is now via attributes applied to properties and the Clear method of a oneof
    
    I'm happy with 1-3.
    4 I'm unsure about - feedback welcome.
    5 will go away
    6 I'm unsure about, both in design and implementation. Should we have a ProtobufMessageAttribute too? Should we find all the relevant attributes in MessageDescriptor and pass them down, to avoid an O(N^2) scenario?
    
    Generated code changes coming in the next commit.
    53c399a1
Name
Last commit
Last update
..
DescriptorBase.cs Loading commit data...
DescriptorPool.cs Loading commit data...
DescriptorProtoFile.cs Loading commit data...
DescriptorUtil.cs Loading commit data...
DescriptorValidationException.cs Loading commit data...
EnumDescriptor.cs Loading commit data...
EnumValueDescriptor.cs Loading commit data...
FieldAccessorBase.cs Loading commit data...
FieldDescriptor.cs Loading commit data...
FieldType.cs Loading commit data...
FileDescriptor.cs Loading commit data...
IDescriptor.cs Loading commit data...
IFieldAccessor.cs Loading commit data...
MapFieldAccessor.cs Loading commit data...
MessageDescriptor.cs Loading commit data...
MethodDescriptor.cs Loading commit data...
OneofAccessor.cs Loading commit data...
OneofDescriptor.cs Loading commit data...
PackageDescriptor.cs Loading commit data...
PartialClasses.cs Loading commit data...
ProtobufFieldAttribute.cs Loading commit data...
ProtobufOneofAttribute.cs Loading commit data...
ReflectionUtil.cs Loading commit data...
RepeatedFieldAccessor.cs Loading commit data...
ServiceDescriptor.cs Loading commit data...
SingleFieldAccessor.cs Loading commit data...