aboutsummaryrefslogtreecommitdiffhomepage
path: root/csharp/ProtocolBuffers/RpcUtil.cs
diff options
context:
space:
mode:
authorGravatar Jon Skeet <skeet@pobox.com>2008-08-14 20:35:27 +0100
committerGravatar Jon Skeet <skeet@pobox.com>2008-08-14 20:35:27 +0100
commitf26f8dce0279b3cd0ee9708bfca322be5c19d4f7 (patch)
treed5165af45b3bcc0243518ad766eb358f04a0980e /csharp/ProtocolBuffers/RpcUtil.cs
parent9134a21f27728996237010449fe9273b3bf4be78 (diff)
The great generics revisiting.
Diffstat (limited to 'csharp/ProtocolBuffers/RpcUtil.cs')
-rw-r--r--csharp/ProtocolBuffers/RpcUtil.cs9
1 files changed, 5 insertions, 4 deletions
diff --git a/csharp/ProtocolBuffers/RpcUtil.cs b/csharp/ProtocolBuffers/RpcUtil.cs
index 75e6f34b..ebd3f47f 100644
--- a/csharp/ProtocolBuffers/RpcUtil.cs
+++ b/csharp/ProtocolBuffers/RpcUtil.cs
@@ -21,12 +21,13 @@ namespace Google.ProtocolBuffers {
/// callback is given a message with a different descriptor, an
/// exception will be thrown.
/// </summary>
- public static Action<IMessage> GeneralizeCallback<T>(Action<T> action, T defaultInstance)
- where T : class, IMessage<T> {
+ public static Action<IMessage> GeneralizeCallback<TMessage, TBuilder>(Action<TMessage> action, TMessage defaultInstance)
+ where TMessage : class, IMessage<TMessage, TBuilder>
+ where TBuilder : IBuilder<TMessage, TBuilder> {
return message => {
- T castMessage = message as T;
+ TMessage castMessage = message as TMessage;
if (castMessage == null) {
- castMessage = (T) defaultInstance.CreateBuilderForType().MergeFrom(message).Build();
+ castMessage = defaultInstance.CreateBuilderForType().MergeFrom(message).Build();
}
action(castMessage);
};