• 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
DescriptorUtil.cs 2.78 KB