当泛型类型为抽象时,如何在 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# 新手:-)