使用する前に静的メソッドを呼び出す必要があるサードパーティのライブラリを使用しています。ソフトウェアのライセンスを検証するためにシリアル キーを設定します。このライブラリを複数のプロジェクトで使用する必要があり、それらのプロジェクトがこのライセンスについて心配する必要がないようにしたいと考えています。理想的には、ライセンスを処理し、ライブラリを使用するプロジェクトによってそれを参照する共有アセンブリを作成し、それらのプロジェクトを、ライセンスが行われていることさえ知らないようにしたいと考えています。
これを達成することを考え始める 1 つの方法は、おそらくアセンブリ属性を使用することです。したがって、ライセンスを設定するコンストラクターを持つものを作成します。
[AttributeUsage(AttributeTargets.Assembly)]
public class LibraryLicenseAttribute : Attribute
{
public LibraryLicenseAttribute()
{
Lib.SetLicense("valid key");
}
}
それをラッパー プロジェクトに配置します。
LibraryWrapperProject
Properties
AssemblyInfo.cs
References
Lib.dll
LibraryLicenseAttribute.cs
そして、それを AssemblyInfo.cs に含めて呼び出します。
[LibraryLicense]
これで、ライブラリを使用する別のプロジェクトでこのプロジェクトを参照できます。
LibraryUserProject
References
LibraryWrapperProject
LibraryUser.cs
…が、図書館を利用しに行くと…
class LibraryUser
{
public LibraryUser()
{
Lib.Use();
}
}
ライセンスが設定されていないことが報告されます。呼び出し元プロジェクトの AssemblyInfo.cs に属性を含めると、属性が呼び出されることがわかりました。これは、すべてのダウンストリーム プロジェクトにライセンスを再配布するよりは優れていますが、それを機能させるにはまだ余分な作業が必要です。
さらに、一部のプロジェクトは、elseware で動的にロードされます。例えば:
Assembly.Load("LibraryUserProject.dll");
含まれているアセンブリを動的にロードするときに、ライセンス アセンブリ属性を呼び出すにはどうすればよいですか? これを容易にする別の .NET Framework 機能はありますか?