当泛型类型为absract时,如何在C#中使用泛型类型方法,TSymmetricAlgorithm

时间:2018-01-17 16:46:06

标签: c# generics encryption cryptography encryption-symmetric

我想调用这个方法:

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子类。我究竟做错了什么?谢谢。

1 个答案:

答案 0 :(得分:0)

使用RijndaelManaged对象类型做了诀窍。我通过反复试验找到了这个。如果有人知道一种快速的方法来找出C#中的所有本机类,它们是某个父抽象类的子类(在本例中是SymmetricAlgorithm),请随时在评论中告诉我以供将来参考。我是C#的新手: - )