diff --git a/csharp/src/Google.Protobuf/Reflection/EnumDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/EnumDescriptor.cs index a7a5dea65b..6d0925475c 100644 --- a/csharp/src/Google.Protobuf/Reflection/EnumDescriptor.cs +++ b/csharp/src/Google.Protobuf/Reflection/EnumDescriptor.cs @@ -136,7 +136,7 @@ namespace Google.Protobuf.Reflection /// Custom options can be retrieved as extensions of the returned message. /// NOTE: A defensive copy is created each time this property is retrieved. /// - public EnumOptions Options => (Proto.Options as IDeepCloneable)?.Clone(); + public EnumOptions Options => Proto.Options?.Clone(); /// /// Gets a single value enum option for this descriptor diff --git a/csharp/src/Google.Protobuf/Reflection/EnumValueDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/EnumValueDescriptor.cs index 5e46a7fcc0..19daec8eb8 100644 --- a/csharp/src/Google.Protobuf/Reflection/EnumValueDescriptor.cs +++ b/csharp/src/Google.Protobuf/Reflection/EnumValueDescriptor.cs @@ -81,7 +81,7 @@ namespace Google.Protobuf.Reflection /// Custom options can be retrieved as extensions of the returned message. /// NOTE: A defensive copy is created each time this property is retrieved. /// - public EnumValueOptions Options => (Proto.Options as IDeepCloneable)?.Clone(); + public EnumValueOptions Options => Proto.Options?.Clone(); /// /// Gets a single value enum value option for this descriptor diff --git a/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs index 4e63a316e3..6f8c2aec46 100644 --- a/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs +++ b/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs @@ -312,7 +312,7 @@ namespace Google.Protobuf.Reflection /// Custom options can be retrieved as extensions of the returned message. /// NOTE: A defensive copy is created each time this property is retrieved. /// - public FieldOptions Options => (Proto.Options as IDeepCloneable)?.Clone(); + public FieldOptions Options => Proto.Options?.Clone(); /// /// Gets a single value field option for this descriptor diff --git a/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs index 7c800e851c..b3dab3a688 100644 --- a/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs +++ b/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs @@ -555,7 +555,7 @@ namespace Google.Protobuf.Reflection /// Custom options can be retrieved as extensions of the returned message. /// NOTE: A defensive copy is created each time this property is retrieved. /// - public FileOptions Options => (Proto.Options as IDeepCloneable)?.Clone(); + public FileOptions Options => Proto.Options?.Clone(); /// /// Gets a single value file option for this descriptor diff --git a/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs index 3c2b8be2e0..0a1d352153 100644 --- a/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs +++ b/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs @@ -295,7 +295,7 @@ namespace Google.Protobuf.Reflection /// Custom options can be retrieved as extensions of the returned message. /// NOTE: A defensive copy is created each time this property is retrieved. /// - public MessageOptions Options => (Proto.Options as IDeepCloneable)?.Clone(); + public MessageOptions Options => Proto.Options?.Clone(); /// /// Gets a single value message option for this descriptor diff --git a/csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs index 9cd58e64d2..b42d454f84 100644 --- a/csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs +++ b/csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs @@ -81,7 +81,7 @@ namespace Google.Protobuf.Reflection /// Custom options can be retrieved as extensions of the returned message. /// NOTE: A defensive copy is created each time this property is retrieved. /// - public MethodOptions Options => (Proto.Options as IDeepCloneable)?.Clone(); + public MethodOptions Options => Proto.Options?.Clone(); /// /// Gets a single value method option for this descriptor diff --git a/csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs index 6e32d7cd0e..d959e078eb 100644 --- a/csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs +++ b/csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs @@ -125,7 +125,7 @@ namespace Google.Protobuf.Reflection /// Custom options can be retrieved as extensions of the returned message. /// NOTE: A defensive copy is created each time this property is retrieved. /// - public OneofOptions Options => (proto.Options as IDeepCloneable)?.Clone(); + public OneofOptions Options => proto.Options?.Clone(); /// /// Gets a single value oneof option for this descriptor diff --git a/csharp/src/Google.Protobuf/Reflection/ServiceDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/ServiceDescriptor.cs index f2afbbda3f..b56e157de8 100644 --- a/csharp/src/Google.Protobuf/Reflection/ServiceDescriptor.cs +++ b/csharp/src/Google.Protobuf/Reflection/ServiceDescriptor.cs @@ -97,6 +97,13 @@ namespace Google.Protobuf.Reflection [Obsolete("CustomOptions are obsolete. Use the Options property.")] public CustomOptions CustomOptions => new CustomOptions(Proto.Options?._extensions?.ValuesByNumber); + /// + /// The ServiceOptions, defined in descriptor.proto. + /// Custom options can be retrieved as extensions of the returned message. + /// NOTE: A defensive copy is created each time this property is retrieved. + /// + public ServiceOptions Options => Proto.Options?.Clone(); + /// /// Gets a single value service option for this descriptor /// @@ -116,13 +123,6 @@ namespace Google.Protobuf.Reflection return Proto.Options.GetExtension(extension).Clone(); } - /// - /// The ServiceOptions, defined in descriptor.proto. - /// Custom options can be retrieved as extensions of the returned message. - /// NOTE: A defensive copy is created each time this property is retrieved. - /// - public ServiceOptions Options => (Proto.Options as IDeepCloneable)?.Clone(); - internal void CrossLink() { foreach (MethodDescriptor method in methods)