我在c#中有一个litle程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static int count;
static void Main(string[] args)
{
for (int i = 0; i<10; i++)
{
Console.WriteLine(func_count());
Console.ReadKey();
}
}
static int func_count()
{
return count++;
}
}
}
我想编写另一个简单的C#程序,它必须能够执行func_count()。第一个exe将全部运行,我不想在第二个应用程序中执行它并反映它的属性。 在获得访问内存区域的权限以避免seg错误之后的C中,我将不得不使用指向函数的指针 - 类似于:
int (* func_ptr)(); //pointer to function
func_ptr = func_count_address
如上所述在C#中执行此操作的简单方法是什么? 假设第一个程序(给定的程序)是原样的,我无法更改代码。
谢谢
答案 0 :(得分:0)
为什么不简单地调用静态方法:ConsoleApplication1.Program.func_count()
。当然,这假设您引用了ConsoleApplication
位于第二个应用程序中的程序集,并且您要调用的方法是公共的(当前不是)。
编辑:如果您不能更改所需方法的访问修饰符,则可以使用反射来调用它。 STH。像这样:
MethodInfo m = typeof(ConsoleApplication.Program).GetMethod("func_count", BindingFlags.NonPublic);
object result = m.Invoke(null, yourParams);
通常你需要一个执行该方法的实例。由于您的方法为static
,因此不需要它,因此Invoke
的第一个参数为NULL
。