当泛型类型为抽象时,如何在 C# 中使用泛型类型方法,SymmetricAlgorithm
How to use generic type methods in C# when the generic type is absract, TSymmetricAlgorithm
我正在尝试调用此方法:
public string Decrypt5<TSymmetricAlgorithm>(string input) where TSymmetricAlgorithm : SymmetricAlgorithm, new()
{
var pwdBytes = Encoding.UTF8.GetBytes(_seed);
using (TSymmetricAlgorithm sa = new TSymmetricAlgorithm())
{
ICryptoTransform saDec = sa.CreateDecryptor(pwdBytes, pwdBytes);
var encBytes = Convert.FromBase64String(input);
var resultBytes = saDec.TransformFinalBlock(encBytes, 0, encBytes.Length);
Debug.WriteLine(Encoding.UTF8.GetString(resultBytes));
return Encoding.UTF8.GetString(resultBytes);
}
}
通过调用 Decrypt5<TSymmetricAlgorithm>("myEncryptedStringBlahblahxyz");
但是我一直收到一个错误,我必须使用具有 public 无参数类型的非抽象类型而不是 TSymmetricAlgorithm。是否有我可以使用的默认 TSymmetricAlgorithm 子类。我究竟做错了什么?谢谢你。
事实证明,使用 RijndaelManaged
对象类型可以解决问题。我通过反复试验发现了这一点。如果有人知道在 C# 中找到子class 某个父抽象 class(在本例中为 SymmetricAlgorithm)的所有原生 classes 的快速方法,请随时告诉我在评论中以供将来参考。我是 C# 新手:-)
我正在尝试调用此方法:
public string Decrypt5<TSymmetricAlgorithm>(string input) where TSymmetricAlgorithm : SymmetricAlgorithm, new()
{
var pwdBytes = Encoding.UTF8.GetBytes(_seed);
using (TSymmetricAlgorithm sa = new TSymmetricAlgorithm())
{
ICryptoTransform saDec = sa.CreateDecryptor(pwdBytes, pwdBytes);
var encBytes = Convert.FromBase64String(input);
var resultBytes = saDec.TransformFinalBlock(encBytes, 0, encBytes.Length);
Debug.WriteLine(Encoding.UTF8.GetString(resultBytes));
return Encoding.UTF8.GetString(resultBytes);
}
}
通过调用 Decrypt5<TSymmetricAlgorithm>("myEncryptedStringBlahblahxyz");
但是我一直收到一个错误,我必须使用具有 public 无参数类型的非抽象类型而不是 TSymmetricAlgorithm。是否有我可以使用的默认 TSymmetricAlgorithm 子类。我究竟做错了什么?谢谢你。
事实证明,使用 RijndaelManaged
对象类型可以解决问题。我通过反复试验发现了这一点。如果有人知道在 C# 中找到子class 某个父抽象 class(在本例中为 SymmetricAlgorithm)的所有原生 classes 的快速方法,请随时告诉我在评论中以供将来参考。我是 C# 新手:-)