diff options
author | 2008-08-14 20:35:27 +0100 | |
---|---|---|
committer | 2008-08-14 20:35:27 +0100 | |
commit | f26f8dce0279b3cd0ee9708bfca322be5c19d4f7 (patch) | |
tree | d5165af45b3bcc0243518ad766eb358f04a0980e /csharp/ProtocolBuffers/RpcUtil.cs | |
parent | 9134a21f27728996237010449fe9273b3bf4be78 (diff) |
The great generics revisiting.
Diffstat (limited to 'csharp/ProtocolBuffers/RpcUtil.cs')
-rw-r--r-- | csharp/ProtocolBuffers/RpcUtil.cs | 9 |
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); }; |