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

时间:2021-10-07 18:50:11
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”,因为它不是委托类型。

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

6 个解决方案

#1


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

但愿c#的编译器能调整其设计,把这类异常信息的先后次序调整一下。。

#2


可以试试(MethodInvoker)lambda

#3


引用 2 楼 Coffee_MX 的回复:
可以试试(MethodInvoker)lambda


以前winform中用的……不知道其他类型的怎么转……不一定对哈 无法将 lambda 表达式 转换为类型“System.Delegate”,因为它不是委托类型。

#4


用不着Delegate.Combine
你可以用+=

#5


ServicePointManager.ServerCertificateValidationCallback =
RemoteCertificateValidationCallback) 
Delegate.Combine(ServicePointManager.ServerCertificateValidationCallback, 
new RemoteCertificateValidationCallback(ValidateServerCertificate));


public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
   return true;
}

#6


using System.Linq;
搞定

#1


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

但愿c#的编译器能调整其设计,把这类异常信息的先后次序调整一下。。

#2


可以试试(MethodInvoker)lambda

#3


引用 2 楼 Coffee_MX 的回复:
可以试试(MethodInvoker)lambda


以前winform中用的……不知道其他类型的怎么转……不一定对哈 无法将 lambda 表达式 转换为类型“System.Delegate”,因为它不是委托类型。

#4


用不着Delegate.Combine
你可以用+=

#5


ServicePointManager.ServerCertificateValidationCallback =
RemoteCertificateValidationCallback) 
Delegate.Combine(ServicePointManager.ServerCertificateValidationCallback, 
new RemoteCertificateValidationCallback(ValidateServerCertificate));


public static bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
   return true;
}

#6


using System.Linq;
搞定