WARNING(おかげでキャッチ用ベンフォークト :)):以下のコードのみが生成されたクラスがをbeforefieldinitされないことを保証C#のに適用されます。 しかし、とC++/CLIように簡単に動作しないでください。あなたは、高度な操作を行うことができ、静的コンストラクタで
using System;
class MyAwesomeLibrary
{
static MyAwesomeLibrary()
{
Console.WriteLine(string.Format("Hey {0} is using me!", Environment.UserName));
}
public static int GetTheAnswer()
{
return 42;
}
}
class Client
{
static void Main()
{
Console.WriteLine("The answer is: " + MyAwesomeLibrary.GetTheAnswer());
}
}
:私のコメントで述べたように、あなたがこのようなものを使用することができますので、
Managed C++ Static Constructor not called in .net4レジストリのチェック、サーバーとの通信などのようなもの...
あなたが悪い人(または権利を保護したい開発者/企業)の場合は、例外をスローすることができますn:
throw new Exception("The library has not been correctly registered...");
この結果、TypeInitializationExceptionはライブラリクラス全体の使用を妨げます。
それとも、CheckMe方法のANSは、彼らが何かを使用するたびに使用しますセキュリティトークンを認証してもらうために、ライブラリを使用する前に、あるいはそれを呼び出すために、すべてのユーザーを尋ね実装することができます...
EDIT:あなたはより保護されるように、あまりにも(少し)あなたのライブラリーを難読化すべきことができますので、もしあなたが決定した攻撃を使う保護は逆コンパイルライブラリによってすべての配管を回避する可能性がどのような
。コメントをlongに
具体的なユースケースは何ですか?それに応じて静的なコンストラクタのような他のメカニズムを使うことができるので... – Pragmateek
私は、ユーザーが試用版またはライセンス版として使用できるライブラリ(.dll)を開発中です。私は、ライセンスを確認し、私の製品の使用に関するいくつかの統計を得るために、サーバーと通信したいと思います。 –
静的なコンストラクタのスパイを使うかもしれないので、私は答えを投稿します。 – Pragmateek