SingularFieldAccessor.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Google.ProtocolBuffers.Descriptors;
  5. namespace Google.ProtocolBuffers.FieldAccess {
  6. internal class SingularFieldAccessor<TMessage, TBuilder> : IFieldAccessor<TMessage, TBuilder>
  7. where TMessage : IMessage<TMessage>
  8. where TBuilder : IBuilder<TMessage> {
  9. readonly HasFunction<TMessage> hasProxy;
  10. readonly Action<TBuilder> clearProxy;
  11. internal SingularFieldAccessor(FieldDescriptor descriptor, String pascalCaseName) {
  12. /* Class<? extends GeneratedMessage> messageClass,
  13. Class<? extends GeneratedMessage.Builder> builderClass) {
  14. getMethod = getMethodOrDie(messageClass, "get" + camelCaseName);
  15. type = getMethod.getReturnType();
  16. setMethod = getMethodOrDie(builderClass, "set" + camelCaseName, type);
  17. hasMethod =
  18. getMethodOrDie(messageClass, "has" + camelCaseName);
  19. clearMethod = getMethodOrDie(builderClass, "clear" + camelCaseName); */
  20. }
  21. public bool Has(IMessage<TMessage> message) {
  22. return false;// hasProxy(message);
  23. }
  24. public void Clear(TBuilder builder) {
  25. // clearProxy(builder);
  26. }
  27. public TBuilder CreateBuilder() {
  28. // return createBuilderProxy(builder);
  29. return default(TBuilder);
  30. }
  31. public object this[IMessage<TMessage> message] {
  32. get { return null;/* getProxy(message);*/ }
  33. }
  34. public object this[IBuilder<TMessage> builder] {
  35. set { /*setProxy(builder, value);*/ }
  36. }
  37. #region Repeated operations (which just throw an exception)
  38. public object this[IMessage<TMessage> message, int index] {
  39. get { throw new InvalidOperationException("Repeated operation called on singular field"); }
  40. }
  41. public object this[IBuilder<TMessage> builder, int index] {
  42. set { throw new InvalidOperationException("Repeated operation called on singular field"); }
  43. }
  44. public int GetRepeatedCount(IMessage<TMessage> message) {
  45. throw new InvalidOperationException("Repeated operation called on singular field");
  46. }
  47. public void AddRepeated(IBuilder<TMessage> builder, object value) {
  48. throw new InvalidOperationException("Repeated operation called on singular field");
  49. }
  50. #endregion
  51. }
  52. }