4

我有

public static void SecureTcpRpc<InterfaceType>(string uri, 
                                               Action<InterfaceType> action) 
                                              where InterfaceType : class;

然后我在这里使用它

 private static AuthorizedActionResult 
                RunChannelAction<T>(IEnumerable<string> uris, 
                                    Func<T, AuthorizedActionResult> actionFunc)
                                    where T : IPingable
            {
                    WcfClient.SecureTcpRpc<T>....

编译器不喜欢我将 T 限制为 IPingable。我不明白它为什么反对。IPingable 是一个引用类型,因此它匹配 SecureTpcRpc 方法的约束。但是编译器说'T必须是引用类型'

4

2 回答 2

5

我认为您还需要对该功能的“类”约束AuthorizedActionResult才能使其正常工作。

where T : class, IPingable
于 2012-04-29T22:22:35.270 回答
1

第二个应该是通用的吗?如果是接口类型,应该是这样的:

private static AuthorizedActionResult RunChannelAction(
  IEnumerable<string> uris, 
  Func<IPingable, AuthorizedActionResult> actionFunc)
        {
                WcfClient.SecureTcpRpc<IPingable>....
于 2012-04-29T22:11:18.943 回答