当泛型类型为 absract时,如何在 C# 中使用泛型类型方法,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");但是我不断收到一个错误,即我必须使用具有公共无参数类型的非抽象类型,而不是 TSymmetricAlgorithm。是否有我可以使用的默认 TSymmetricAlgorithm 子类。我做错了什么?谢谢。

事实证明,使用RijndaelManaged对象类型就可以解决问题。我通过反复试验发现了这一点。如果有人知道一种快速的方法,可以找到C#中所有原生类,该本机类对某个父抽象类(在本例中为SymmetricAlgorithm(进行子类化,请随时在评论中告诉我以备将来参考。我是 C# 的新手:-(

最新更新