c# - 一个方法返回一个元组,如何在C#中分配两个取元组结果的变量
问题描述
我是新的概念Tuples
。
我有一个Value Tuple
返回两件事的方法——一个certificate
用于数字签名,一个enum
是结果(值为“success”和“cannotsigndoc”)。
我想在两个变量中收集这个方法的结果。
这是方法:
public (InvoiceResult resultValue, X509Certificate2 cert) GetDefaultCertificateStoredOnTheCard()
{
var resultValue = InvoiceResult.Success;
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, true);
// by thumbprint, there is only one
certs = certs.Find(X509FindType.FindByThumbprint, "6BB4AZD483206Z44B992799541114536579CF2B3", true);
if (certs.Count == 0)
{
resultValue = InvoiceResult.CannotFindSignature;
throw new ArgumentException("Please insert smart card to obtain certificate.");
}
X509Certificate2 cert = certs[0];
RSACryptoServiceProvider key;
if (cert.HasPrivateKey)
{
// software cert
key = cert.PrivateKey as RSACryptoServiceProvider;
}
else
{
// certificate from smartcard
CspParameters csp = new CspParameters(1, "Microsoft Base Smart Card Crypto Provider");
csp.Flags = CspProviderFlags.UseDefaultKeyContainer;
key = new RSACryptoServiceProvider(csp);
}
return (resultValue, cert);
}
这里是我想在两个变量中收集方法结果的地方:
var certificate,resultValue = GetDefaultCertificateStoredOnTheCard();
这些是我从以下得到的错误:
“隐式类型变量不能有多个声明符”
“必须初始化隐式类型变量”
解决方案
尝试通过添加括号来更改分配变量的行:
var (certificate, resultValue) = GetDefaultCertificateStoredOnTheCard();
此资源可能会有所帮助:
https://www.danielcrabtree.com/blog/17/c-sharp-7-preview-using-tuples-to-return-multiple-values
推荐阅读
- javascript - 如何从其他刀片文件打开引导模式?(拉拉维尔)
- celery - Airflow - 切换到 CeleryExecutor 导致用户“airflow”异常的密码验证失败
- javascript - 在客户端进行firebase电话身份验证并在服务器的数据库中创建帐户的最佳方法
- service - 如何使用 systemd 启动 pyqt ui 应用程序
- flutter - 使用 VS Code 发布 Flutter 的应用程序
- python - 涉及 javascript 元素的 Python Web Scraping
- c++ - 如何仅使用对象名称打印对象特定成员?
- html - 如何在 html 中实现我感到幸运?
- python - 在 python 中理解 Twitter Premium API 沙盒
- azure - Connect-MSGraph 命令无法在 Azure Functions powershell core 6 中执行