首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

急知道DLL中函数名字的字符串,怎么调用到DLL中对应的函数

2012-04-11 
急!知道DLL中函数名字的字符串,如何调用到DLL中对应的函数?一个DLL,内有数百个函数,例子如下:namespaceCao

急!知道DLL中函数名字的字符串,如何调用到DLL中对应的函数?
一个DLL,内有数百个函数,例子如下:

namespace   Cao
{
                public   class   Zheng
                {
                                public   int   Bi(string   mao,   ref   double   shui)
                                {
                                                MessageBox.Show(mao);

                                                shui   =   123.0;

                                                return   0;
                                }
                }
}

Bi为其中一个函数。

我要在我的主程序里调用Bi,而我只知道 "Bi "这个字符串,改如何调用到?

主程序例子:

namespace   ol2
{
        public   partial   class   Form1   :   Form
        {
                public   Form1()
                {
                        InitializeComponent();
                }


                        private   void   button1_Click(object   sender,   EventArgs   e)
                        {
                                        Cao.Zheng   z   =   new   Cao.Zheng();

                                        double   v   =   0;
                                        int   ret   =   z.Bi( "qaz ",ref   v);

                                        MessageBox.Show( "v= "   +   v.ToString()   +   ",   ret= "   +   ret.ToString());
                        }


                        private   void   button2_Click(object   sender,   EventArgs   e)
                        {
                                        Cao.Zheng   z   =   new   Cao.Zheng();


                                        string   fnName   =   "Bi ";

                                        //How   to   call   z.Bi()   ???????????????????
                        }
        }
}

button1的方式当然没有问题,但在button中改如何做?



[解决办法]
Cao.Zheng z = new Cao.Zheng();
string fnName = "Bi ";

//How to call z.Bi() ???????????????????
-------------------------

MethodInfo mi = z.GetType().GetMethod(fnName, BindingFlags.Instance| BindingFlags.Public);
if (mi != null)
{
mi.Invoke(z, null);
}

[解决办法]
通过反射,来进行,对DLL 的动态加载,和调用
[解决办法]
http://www.cnblogs.com/light169/archive/2007/04/09/705434.html
[解决办法]
参考PETSHOP DAL层
[解决办法]
路過……
找一下反射相關的資料。
[解决办法]
mark
[解决办法]
反射就OK了
[解决办法]
反射好好看看吧

热点排行