日期:2014-05-17  浏览次数:21472 次

无法将 lambda 表达式 转换为类型“System.Delegate”,因为它不是委托类型。
本帖最后由 lyh1234 于 2014-01-10 20:54:25 编辑
ServicePointManager.ServerCertificateValidationCallback = (RemoteCertificateValidationCallback)Delegate.Combine(ServicePointManager.ServerCertificateValidationCallback, (object se, X509Certificate cert, X509Chain chain, SslPolicyErrors sslerror) => true);


ServicePointManager.ServerCertificateValidationCallback = (RemoteCertificateValidationCallback)Delegate.Combine(ServicePointManager.ServerCertificateValidationCallback, (object se, X509Certificate cert, X509Chain chain, SslPolicyErrors sslerror) => true);

无法将 lambda 表达式 转换为类型“System.Delegate”,因为它不是委托类型。

哪里错了,这是什么错误?哪位帮忙分析分析?

------解决方案--------------------
lamda是高级的语法糖,往往不能用传统低级语法习惯去考虑。这有可能是lamda表达式内部的某个程序块编译不过去,造成使用lamda的delegate编译不匹配。此时可能需要先解决后边的一两个问题。

但愿c#的编译器能调整其设计,把这类异常信息的先后次序调整一下。。
------解决方案--------------------
可以试试(MethodInvoker)lambda
------解决方案--------------------
引用:
可以试试(MethodInvoker)lambda


以前winform中用的……不知道其他类型的怎么转……不一定对哈
------解决方案--------------------
用不着Delegate.Combine
你可以用+=