C#使用反射使用类的函数

简介: C#使用反射使用类的函数

直接根据dll实例化,不需要引用,但是需要已知命名空间和类名


using System.Reflection;
object instance;
......
private void Ini()
{
    string str = System.IO.Directory.GetCurrentDirectory()+ "/det.dll";
    Assembly asm = Assembly.LoadFile(str);
    var type = asm.GetType("Test.Det"); //
    instance = asm.CreateInstance("Test.Det");
    var method = type.GetMethod("Ini");
    //调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值
    BindingFlags flag = BindingFlags.Public | BindingFlags.Instance;
    object[] parameters = new object[] { "", "./model/deploy.pkl", (uint)0};
    object returnIng =  method.Invoke(instance, flag, Type.DefaultBinder, parameters, null);
    Console.WriteLine(returnIng); //Int类型
}
//  检测
private void Det(object sender, EventArgs e)
{
     string str = System.IO.Directory.GetCurrentDirectory()+ "/det.dll";
     Assembly asm = Assembly.LoadFile(str);
     var type = asm.GetType("Test.Det"); //命名空间
     var method = type.GetMethod("Detect");
     //调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值
     BindingFlags flag = BindingFlags.Public | BindingFlags.Instance;
     Bitmap bitmap = new Bitmap(@"/000001.jpg");
     object[] parameters = new object[] {bitmap, (uint)640, 0.3f };
     object returnIng = method.Invoke(instance, flag, Type.DefaultBinder, parameters, null);
     List<double> result = (List<double>)returnIng;
     Console.WriteLine(result.Count / 6);
}



相关文章
|
2月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
2月前
|
C#
58.c#:directory类
58.c#:directory类
13 0
|
2月前
|
C#
57.c#:directorylnfo类
57.c#:directorylnfo类
13 0
|
2月前
|
监控 C#
55.c#:file类
55.c#:file类
17 1
|
2月前
|
算法 C#
54.c#:random类
54.c#:random类
15 1
|
2月前
|
C#
51.c#:string类的静态方法
51.c#:string类的静态方法
21 1
|
2月前
|
C#
27.c#关键字sealed修饰类
27.c#关键字sealed修饰类
12 0
|
4月前
|
Java C#
C# 面向对象编程解析:优势、类和对象、类成员详解
OOP代表面向对象编程。 过程式编程涉及编写执行数据操作的过程或方法,而面向对象编程涉及创建包含数据和方法的对象。 面向对象编程相对于过程式编程具有几个优势: OOP执行速度更快,更容易执行 OOP为程序提供了清晰的结构 OOP有助于保持C#代码DRY("不要重复自己"),并使代码更易于维护、修改和调试 OOP使得能够创建完全可重用的应用程序,编写更少的代码并减少开发时间 提示:"不要重复自己"(DRY)原则是有关减少代码重复的原则。应该提取出应用程序中常见的代码,并将其放置在单一位置并重复使用,而不是重复编写。
51 0
|
2月前
|
C#
深入C#中的String类
深入C#中的String类
11 0
|
2月前
|
C#
C#学习系列相关之多线程(二)----Thread类介绍
C#学习系列相关之多线程(二)----Thread类介绍