ヘルパークラス内にいくつかのヘルパーメソッドがあります。ヘルパーメソッドはC#で静的クラスを使用する必要があります
var abc = new HelperClass()
var def = abc.doAction("ghi");
非静的クラスとしてこれらを有し、かつ周りたびにインスタンスを作成することに利点があります:私の会社では、私は他の人が以下のようにこれらのヘルパーメソッドを使用することを参照してください? staticとしてヘルパークラスを宣言し、次の操作を実行するために、より良いではないでしょう:
var def = HelperClass.doAction("ghi");
私は後者が、私はstaticとしてヘルパークラスとのdoActionメソッドの両方を宣言する必要があるんですか?ここで
は、私が使用するいくつかのコードの例です:
namespace Power.Storage.Helpers
{
public class SimplerAES
{
private static byte[] key = { 123, 217, 19, 11, 24, 26, 85, 45, 114, 184, 27, 162, 37, 112, 222, 209, 241, 24, 175, 144, 173, 53, 196, 29, 24, 26, 17, 218, 131, 236, 53, 209 };
private static byte[] vector = { 146, 64, 191, 111, 23, 3, 113, 119, 231, 121, 221, 112, 79, 32, 114, 156 };
private ICryptoTransform encryptor, decryptor;
private UTF8Encoding encoder;
public SimplerAES()
{
RijndaelManaged rm = new RijndaelManaged();
encryptor = rm.CreateEncryptor(key, vector);
decryptor = rm.CreateDecryptor(key, vector);
encoder = new UTF8Encoding();
}
...
public byte[] Encrypt(byte[] buffer)
{
MemoryStream encryptStream = new MemoryStream();
using (CryptoStream cs = new CryptoStream(encryptStream, encryptor, CryptoStreamMode.Write))
{
cs.Write(buffer, 0, buffer.Length);
}
return encryptStream.ToArray();
}
public byte[] Decrypt(byte[] buffer)
{
MemoryStream decryptStream = new MemoryStream();
using (CryptoStream cs = new CryptoStream(decryptStream, decryptor, CryptoStreamMode.Write))
{
cs.Write(buffer, 0, buffer.Length);
}
return decryptStream.ToArray();
}
}
}
、他のクラスをインスタンス化するコンストラクタを持っているとして、これは、静的であってはならないと言うことが正しいだろう。
ありがとうございました。私はちょうど私が使用するクラス(インターネットから)の例を追加しました。私はこのクラスの作者がそれを静的にしていないことに気付きました。たぶんこれは別の質問の対象になるはずですが、著者がそれを静的にしなかった理由を知ることができますか? – JonAndMarie
そのコードはあまり良くありません。 ICryptoTransformは再利用されるのではなく、処分されるべきです。したがって、ステートフルではありません。また、**キーをハードコードしない**! – SLaks
ありがとうSLaks。ここで例としてハードコードされたキー:-) – JonAndMarie