执行另一个C#运行程序的功能

时间:2015-02-27 09:18:24

标签: c#

我在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#中执行此操作的简单方法是什么? 假设第一个程序(给定的程序)是原样的,我无法更改代码。

谢谢

1 个答案:

答案 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