aboutsummaryrefslogtreecommitdiff
path: root/csharp/ProtocolBuffers/AbstractBuilder.cs
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2008-08-14 20:35:23 +0100
committerJon Skeet <skeet@pobox.com>2008-08-14 20:35:23 +0100
commitbef2caf5e49dbcf6b926d01cfb0948dedee49c93 (patch)
treeb4861e64633b81094c1ae96630136000de0b7505 /csharp/ProtocolBuffers/AbstractBuilder.cs
parent5d7adf66ceb531be50cec1963ecdf271f5fc591e (diff)
downloadprotobuf-bef2caf5e49dbcf6b926d01cfb0948dedee49c93.tar.gz
protobuf-bef2caf5e49dbcf6b926d01cfb0948dedee49c93.tar.bz2
protobuf-bef2caf5e49dbcf6b926d01cfb0948dedee49c93.zip
Added DynamicMessage and ExtendableBuilder, along with the first supporting tests.
Diffstat (limited to 'csharp/ProtocolBuffers/AbstractBuilder.cs')
-rw-r--r--csharp/ProtocolBuffers/AbstractBuilder.cs13
1 files changed, 12 insertions, 1 deletions
diff --git a/csharp/ProtocolBuffers/AbstractBuilder.cs b/csharp/ProtocolBuffers/AbstractBuilder.cs
index 256975e9..d65c0911 100644
--- a/csharp/ProtocolBuffers/AbstractBuilder.cs
+++ b/csharp/ProtocolBuffers/AbstractBuilder.cs
@@ -8,6 +8,7 @@ using System.IO;
namespace Google.ProtocolBuffers {
/// <summary>
/// Implementation of the non-generic IMessage interface as far as possible.
+ /// TODO(jonskeet): Make this generic, to avoid so much casting in DynamicMessage.
/// </summary>
public abstract class AbstractBuilder : IBuilder {
#region Unimplemented members of IBuilder
@@ -57,7 +58,7 @@ namespace Google.ProtocolBuffers {
}
#endregion
- public IBuilder Clear() {
+ public virtual IBuilder Clear() {
foreach(FieldDescriptor field in AllFields.Keys) {
ClearFieldImpl(field);
}
@@ -168,5 +169,15 @@ namespace Google.ProtocolBuffers {
}
public abstract UnknownFieldSet UnknownFields { get; set; }
+
+ public IBuilder SetField(FieldDescriptor field, object value) {
+ this[field] = value;
+ return this;
+ }
+
+ public IBuilder SetRepeatedField(FieldDescriptor field, int index, object value) {
+ this[field, index] = value;
+ return this;
+ }
}
}