我想知道如何调用外部静态类(dll文件)中定义的函数而不在main中调用它。
为了使事情更清楚,考虑一个没有公开代码的exe文件,我们不能对它做任何修改,现在我想测试一个exe文件,其中包含我的dll文件中定义的某些测试用例必须在exe文件的main()函数中调用函数。但如上所述,我没有权限修改exe文件的代码。现在,如何使用visual studio在没有调用它的情况下在所需的执行点调用此dll函数。
我想调用一个函数而不向main函数添加任何行。
为了让事情更清楚,我只想添加一些例子
static class DllClass
{
static void dllFunction()
{
//some implementation.
}
}
class ThirdParty
{
public static void Main()
{
//Default implementation that i cannot modify.
//Invoking my static function at this point without calling.(i.e i cannot call DllClass.dllFunction())
//continuing with default implementation.
}
}
答案 0 :(得分:0)
一个想法是,如果你无法修改.exe中的代码,使用Powershell调用dll文件。
例如,一个带方法的简单库。
命名空间数学
{
公共课方法
{
公共方法()
{
}
public static int Compare1(int a,int b)
{
如果一个 返回a;
否则
返回b;
}public int Compare2(int a,int b)
{
如果一个 返回a;
否则
返回b;
}
}
}
然后在Powershell环境中调用它:
[空隙] [reflection.assembly] ::的LoadFile( “C:/xxx.dll”)
02. [Math.methods] ::比较1(10,8)
03. $ a = New-Object Math.Methods
04. $ a.Compare2(2,6)