| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | 
							- using Google.ProtocolBuffers.DescriptorProtos;
 
- namespace Google.ProtocolBuffers.Descriptors {
 
-   /// <summary>
 
-   /// Describes a single method in a service.
 
-   /// </summary>
 
-   public class MethodDescriptor : IndexedDescriptorBase<MethodDescriptorProto, MethodOptions> {
 
-     private readonly ServiceDescriptor service;
 
-     private MessageDescriptor inputType;
 
-     private MessageDescriptor outputType;
 
-     /// <value>
 
-     /// The service this method belongs to.
 
-     /// </value>
 
-     public ServiceDescriptor Service {
 
-       get { return service; }
 
-     }
 
-     /// <value>
 
-     /// The method's input type.
 
-     /// </value>
 
-     public MessageDescriptor InputType {
 
-       get { return inputType; }
 
-     }
 
-     /// <value>
 
-     /// The method's input type.
 
-     /// </value>
 
-     public MessageDescriptor OutputType {
 
-       get { return outputType; }
 
-     }
 
-     internal MethodDescriptor(MethodDescriptorProto proto, FileDescriptor file,
 
-         ServiceDescriptor parent, int index) 
 
-         : base(proto, file, parent.FullName + "." + proto.Name, index) {
 
-       service = parent;
 
-       file.DescriptorPool.AddSymbol(this);
 
-     }
 
-     internal void CrossLink() {
 
-       IDescriptor lookup = File.DescriptorPool.LookupSymbol(Proto.InputType, this);
 
-       if (!(lookup is MessageDescriptor)) {
 
-         throw new DescriptorValidationException(this, "\"" + Proto.InputType + "\" is not a message type.");
 
-       }
 
-       inputType = (MessageDescriptor) lookup;
 
-       lookup = File.DescriptorPool.LookupSymbol(Proto.OutputType, this);
 
-       if (!(lookup is MessageDescriptor)) {
 
-         throw new DescriptorValidationException(this, "\"" + Proto.OutputType + "\" is not a message type.");
 
-       }
 
-       outputType = (MessageDescriptor) lookup;
 
-     }
 
-   }
 
- }
 
 
  |