3
我有一個接口不能實例化一個泛型類
public interface ICrypto<T> : IDisposable
{
ICryptoTransform GetDecryptor();
ICryptoTransform GetEncryptor();
T GetAlgorithm();
}
我有一個實現
public class TripleDESCryptoProvider : ICrypto<TripleDESCryptoServiceProvider>
{
public TripleDESCryptoProvider() { }
public ICryptoTransform GetDecryptor()
{
return GetAlgorithm().CreateDecryptor();
}
public ICryptoTransform GetEncryptor()
{
return GetAlgorithm().CreateEncryptor();
}
public TripleDESCryptoServiceProvider GetAlgorithm()
{
...
}
public void Dispose()
{
throw new NotImplementedException();
}
}
我有一個實現執行上述
public class CryptoWork<T> where T : ICrypto<T>, new()
{
protected static T _keyStore;
public static T KeyStore
{
get
{
if (_keyStore == null)
{
_keyStore = new T();
}
return _keyStore;
}
}
/// <summary>
/// Encrypt a byte array
/// </summary>
public string Encrypt(string input)
{
byte[] inputArray = UTF8Encoding.UTF8.GetBytes(input);
using (var encryptor = KeyStore.GetEncryptor())
{
return Convert.ToBase64String(encryptor.TransformFinalBlock(inputArray, 0, inputArray.Length));
}
}
/// <summary>
/// Decrypt a byte array
/// </summary>
public string Decrypt(string input)
{
byte[] inputArray = Convert.FromBase64String(input);
using (var encryptor = KeyStore.GetDecryptor())
{
return UTF8Encoding.UTF8.GetString(encryptor.TransformFinalBlock(inputArray, 0, inputArray.Length));
}
}
}
我有問題,一個類實例化類CryptoWork<T> where T : ICrypto<T>, new()
:
既不
var cryptoWork = new CryptoWork < ICrypto <TripleDESCryptoProvider> >();
也不
var cryptoWork = new CryptoWork <TripleDESCryptoProvider>();
編譯。
那麼,說什麼「有問題」的含義。粘貼* exact *編譯器錯誤或失敗指示符。 – 2013-01-17 23:41:19