2016-09-27 75 views
1

我有一些来自我需要许可的第三方的DLL。它有一些我必须从我自己的DLL调用的方法。我的DLL在几个项目中被引用,我不想对每个主机进行更改。有没有什么方法可以在我的DLL中调用一些方法?像添加一些静态类或构造函数,但没有明确从宿主中调用该类?我不确定我是否清楚地解释它。如有需要请提问。有什么办法可以自动运行DLL中的某些代码?

ThirdPartyType license = new ThirdPartyType(); 
license.Load("license.xml"); 

这是我想放在我的DLL中并在相同的DLL中调用它的一段授权码。

+1

客户使用的类的静态构造函数应该这样做。 – Maarten

+0

你想要从引用你自己的dll的所有程序集中执行这段代码吗? – HimBromBeere

+0

@Maarten,是的,但我的意思是没有明确的电话给我的DLL ...我不想改变每个主机应用程序,并想以某种方式调用它在域加载或...我不知道如果可能在所有。 –

回答

2

在低级别,运行时间支持“模块初始化程序”。但是,C#没有提供任何实现它们的方法,因此最接近你可以管理的是一个静态构造函数(“类型初始化器”)或只是一个常规构造函数。

但是,将您的许可证绑定到模块初始值设定项或类型初始值设定项可能是一个坏主意,因为您不知道它们何时运行,并且可能会影响不会访问的代码你的lib。由于您的授权代码决定不开心,所以对某人的应用程序有些不满 - 尤其是如果您的图书馆当时没有被主动调用。因此,我建议最合适的做法是在构造函数或建造后的Initialize(...)方法(除非提供有效细节的工具拒绝工作)。

+0

谢谢你的答案。我怀疑这是不可能的。 –

相关问题