反射的基本概念: .Net Framework 中提供了反射机制,可以再加载程序运行时,动态获取和加载程序集,并且可以获取到程序集的信息

创建Assembly和Entity两个程序集,在Assembly中添加Entity引用,如下图:

namespace Entity
{
public class GetData
{
public static SIMPEntities SIMP = new SIMPEntities(); /// <summary>
/// 查询方法--返回序列化json
/// </summary>
/// <returns></returns>
public string GetResule()
{
JavaScriptSerializer Serialize = new JavaScriptSerializer();
var list = SIMP.Sys_Employee
.Select(a => new { id = a.EmpId, EmpName = a.EmpName, PositionName = (a.Sys_Position!=null)?a.Sys_Position.PositionName:"无" })
.ToList();
return Serialize.Serialize(list);
}
}
}
namespace AssemblyTest
{
class Program
{
private static Program pro = new Program();
static void Main(string[] args)
{
pro.GetAssemblyInfo(); pro.LoadAssembly();
Console.ReadLine();
}
/// <summary>
/// 动态读取DLL,执行其中的方法
/// </summary>
public void LoadAssembly()
{
//DLL所在的绝对路径
Assembly assembly = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "Entity.dll");
//注意写法:程序集.类名
Type type = assembly.GetType("Entity.GetData");
//获取类中的公共方法GetResule
MethodInfo methed = type.GetMethod("GetResule");
//创建对象的实例
object instance = System.Activator.CreateInstance(type);
//执行方法 new object[]为方法中的参数
object result = methed.Invoke(instance, new object[] { });
}
/// <summary>
/// //获取程序集信息
/// </summary>
public void GetAssemblyInfo()
{
Type type = typeof(Program);
Assembly assembly = Assembly.GetExecutingAssembly();
Console.WriteLine("命名空间:{0}", type.Namespace);
Console.WriteLine("程序集:{0}", type.Assembly);
Console.WriteLine("类的名字{0}", type.Name);
Console.WriteLine("类的全部名字{0}", type.FullName);
Console.WriteLine("基类:{0}", type.BaseType);
Console.WriteLine("----------------------------");
Console.WriteLine("程序集的名称:{0}", assembly.GetName());
Console.WriteLine("程序集的全名:{0}", assembly.FullName);
Console.WriteLine("程序集的版本:{0}", assembly.GetName().Version);
Console.WriteLine("程序集的位置:{0}", assembly.Location);
Console.WriteLine("程序集所在目录:{0}", AppDomain.CurrentDomain.BaseDirectory);
}
}
}

C#利用反射动态调用DLL并返回结果,和获取程序集的信息的更多相关文章

  1. C# 知识点笔记:IEnumerable<>的使用,利用反射动态调用方法

    IEnumerable<T>的使用 创建一个IEnumerable对象 List<string> fruits = new List<string> { " ...

  2. C# 利用反射动态调用类成员

    用反射动态调用类成员,需要Type类的一个方法:InvokeMember.对该方法的声明如下(摘抄于MSDN): publicobject InvokeMember(    string name, ...

  3. C#利用反射机制调用dll

    利用反射进行动态加载和调用. Assembly ass=Assembly.LoadFrom(DllPath); //利用dll的路径加载,同时将此程序集所依赖的程序集加载进来,需后辍名.dll Ass ...

  4. C#反射动态调用dll中的方法,并返回结果(转)

    反射的作用是动态的加载某个dll(程序集),并执行该程序集中的某个方法,并返回结果:当然也可以给该方法传递参数 namespace assembly_name { public class assem ...

  5. C#反射动态调用dll中的方法

    //加载程序集(dll文件地址),使用Assembly类 Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirec ...

  6. C#反射动态调用dll中的方法及使用QuartZ.net实现作业调度

    using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; using System.Linq; ...

  7. 利用C#的反射机制动态调用DLL类库

    最近由于业务要求,需要动态调用DLL类库,所以研究了一下,感觉还好也不太难,今天就把自己理解的写了一个小例子(已经通过VS2005跑通),供大家一起研究和探讨,有理解不当的地方还请高手们多多指正,谢谢 ...

  8. 利用java反射动态调用方法,生成grid数据

    项目中需要java后台查询并组装前台grid的数据,数据行数不定,数据行定义不定,开始用了最原始的方法,写了几百行,就是前台需要什么字段后台拼接什么字段,java代码冗余量非常大,并且不够灵活,一旦前 ...

  9. C# 利用反射动态加载dll

    笔者遇到的一个问题,dll文件在客户端可以加载成功,在web端引用程序报错.解决方法:利用反射动态加载dll 头部引用加: using System.Reflection; 主要代码: Assembl ...

随机推荐

  1. WPF DataGrid 导出Excel

    #region Excel导出 private void btnExportExcel_Click(object sender, RoutedEventArgs e) { Export(this.dg ...

  2. Java 中统计文件中出现单词的次数练习

    统计英文article.txt文件中出现hello这个单词的次数 这个是article.txt文件内容 { hello The Royal Navy is trying hello to play h ...

  3. JIRA 资源

    https://www.**.com/article/2015/8/7/22532.html e_v_g_e_t JIRA使用教程:在Windows上安装JIRAJIRA使用教程:在Linux上安装J ...

  4. bzoj5044: 岛屿生成

    Description 小Q设计了一款2D游戏,它的地图建立在二维笛卡尔坐标系上.这个游戏最大的特色就是可以随机生成地图,但是 岛屿生成却给小Q带来了巨大的麻烦.一个岛屿可以看成一个恰好有n个顶点的简 ...

  5. final与abstract关键字

    final特点: 1:这个关键字是一个修饰符,可以修饰类,方法,变量. 2:被final修饰的类是一个最终类,不可以被继承. 3:被final修饰的方法是一个最终方法,不可以被覆盖. 4:被final ...

  6. PAT 乙级 1041 考试座位号(15) C++版

    1041. 考试座位号(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 每个PAT考生在参加考试时都会被分 ...

  7. spring4.0之七:Ordering Autowired Collections

    Spring 4.0的一个小特性是在自动注入的时候使用@Order.Spring 2.5中,我们将bean注入List,如下代码: import org.springframework.stereot ...

  8. 学习笔记之Sublime Text

    Sublime Text - A sophisticated text editor for code, markup and prose https://www.sublimetext.com/ A ...

  9. 廖雪峰Java4反射与泛型-3泛型-7泛型和反射

    1.部分反射API是泛型 1.1获取反射API的泛型 部分反射API是泛型,如Class<T>是泛型 //如果使用Class,不带泛型,出现compile warning编译警告 Clas ...

  10. PHP正则配合写配置文件导致Getshell

    PHP正则配合写配置文件导致Getshell,偶然间看到的一个题目, p 牛的小密圈的一个问题. 分析一下,漏洞代码: index.php <?php $str=addslashes($_GET ...