我正在使用第三方庫,需要在使用靜態方法之前調用它 - 它將設置序列鍵以驗證軟件的許可證。我需要在多個項目中使用這個庫,我想避免這些項目需要擔心此許可證。理想情況下,我想創建一個共享程序集,它將處理許可證,並使用該庫的項目引用它,並將這些項目從知道任何許可證正在發生的地方隔離出來。動態加載程序集的組件屬性
開始考慮完成此操作的一種方法是使用程序集屬性。所以,我提出一個具有構造器來設置許可證:
[AttributeUsage(AttributeTargets.Assembly)]
public class LibraryLicenseAttribute : Attribute
{
public LibraryLicenseAttribute()
{
Lib.SetLicense("valid key");
}
}
,並把它放在一個包裝項目:
LibraryWrapperProject
Properties
AssemblyInfo.cs
References
Lib.dll
LibraryLicenseAttribute.cs
,並請有包括它的AssemblyInfo.cs調用:
LibraryUserProject
References
LibraryWrapperProject
LibraryUser.cs
:
[LibraryLicense]
現在,我可以在使用該庫的另一個項目中引用這個項目
...但是當我去使用這個庫...
class LibraryUser
{
public LibraryUser()
{
Lib.Use();
}
}
據報道,該許可證還沒有確定。我發現我可以在調用項目的AssemblyInfo.cs中包含該屬性,並且該屬性將被調用。這比將許可重新分配給所有下游項目要好,但他們仍需要額外的努力才能使其發揮作用。
此外 - 一些項目動態加載其他軟件。例如:
Assembly.Load("LibraryUserProject.dll");
如何在動態加載包含它的程序集時調用授權程序集屬性?是否有另一個.NET框架功能可以使這更容易?
你是否總是從相同的應用程序域內調用? – 2010-09-23 03:32:33