小编use*_*698的帖子

Resharper自定义模式var

Resharper的代码检查建议在任何地方使用C#而不是显式类型的var.我不喜欢这个选项,因为太多的var会让事情变得不清楚,所以我禁用了那个选项.但是我喜欢使用var的情况是在初始化的情况下,使用泛型的同一行上的类型的两倍(因此在与java 7中的菱形运算符类似的情况下),如:

Dictionary<string string> dic = new Dictionary<string, string>();
// I want a suggestion to replace this to
var dic = new Dictionary<string, string>();
// but I don't want to replace things like this:
Person p = new Person();
Run Code Online (Sandbox Code Playgroud)

我在Resharper中制作了一个自定义模式:

Dictionary<$type1$, $type2$> $id$ = new Dictionary<$type1$, $type2$>();
Run Code Online (Sandbox Code Playgroud)

替换为:

var $id$ = new Dictionary<$type1$, $type2$>();
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但模式还会找到已使用规则转换的行.为什么以及如何解决这个问题?

编辑:将部分文本设置为粗体,因为没有人看到它.

c# resharper var visual-studio

7
推荐指数
1
解决办法
387
查看次数

.NET ECDiffieHellmanCng 和 BouncyCastle Core 兼容协议

我必须与第三方签订 Diffie Hellman 协议,该第三方以 .NET ECDiffieHellmanCng XmlString 格式传输公钥。我无法更改他们的代码。他们发送的内容如下所示:

<ECDHKeyValue xmlns="http://www.w3.org/2001/04/xmldsig-more#">
  <DomainParameters>
    <NamedCurve URN="urn:oid:1.3.132.0.35" />
  </DomainParameters>
  <PublicKey>
    <X Value="11" xsi:type="PrimeFieldElemType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
    <Y Value="17" xsi:type="PrimeFieldElemType" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </PublicKey>
</ECDHKeyValue>
Run Code Online (Sandbox Code Playgroud)

他们使用典型的 .NET Framework 代码生成它,如下所示:

using (ECDiffieHellmanCng dhKey = new ECDiffieHellmanCng())
{
    dhKey.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash;
    dhKey.HashAlgorithm = CngAlgorithm.Sha256;

    Console.WriteLine(dhKey.PublicKey.ToXmlString());
}
Run Code Online (Sandbox Code Playgroud)

他们希望以相同的格式接收我的公钥。他们像这样使用我的公钥:

ECDiffieHellmanCngPublicKey pbkey = ECDiffieHellmanCngPublicKey.FromXmlString(xmlHere);
Run Code Online (Sandbox Code Playgroud)

我在 .NET 核心 2.1 中工作。不幸的是,ECDiffieHellmanCng 类等目前尚未在 .NET 核心中实现。我想我可以为此使用 BouncyCastle for .NET Core 包:https ://www.nuget.org/packages/BouncyCastle.NetCore/ 我假设它们都实现了相同的标准并且它们将兼容。

我知道如何与充气城堡完全达成一致,但是我不清楚如何从 .NET ECDiffieHellmanCng 中的 xml 中的 X 和 Y 值开始,以及如何确保我使用兼容的参数. 我也不清楚如何从我生成的充气城堡公钥中获取 X …

.net c# bouncycastle diffie-hellman .net-core

5
推荐指数
1
解决办法
1145
查看次数