.net Reflection(反射)- 一
Reflection 反射需要引用 using System.Reflection; 命名空间。
通过 Assembly 类的 Load( ); 加载指定的 程序集
Assembly 是不能被实例化, 所以能通过调用静态方法Load();加载指定程序集。
通过GetType()RefLiuyl中GetCond的类型
Assembly assembly = Assembly.Load("RefLiuyl");
//获取类型,参数(名称空间+类)
Type type = assembly.GetType("RefLiuyl.GetCon");
还有一种当使用泛型的时候 GetName<T>() 。 直接 获取类型Type type = typeof(T);
我们来看看部分内部Load原型静态方法:
//Assembly内部Load原型 --部分
public class Assembly
{
//Load静态重载原型
public static Assembly Load(AssemblyName assemblyRef);
public static Assembly Load(string assemblyString);
}
这里的 AssemblyName 其实就是取 程序集
AssemblyName classlibrary = new AssemblyName("ClassLibrary");
Assembly assembly = Assembly.Load(classlibrary);
Assembly 还可以通过路径来加载程序集
Assembly assem = Assembly.LoadFrom("path");
//Assembly内部Load原型 --部分
public class Assembly
{
//Load静态重载原型
public static Assembly LoadFrom(string path);
}
二。构造类型的实例
Assembly assembly = Assembly.Load("RefLiuyl");
//获取类型,参数(名称空间+类)
Type type = assembly.GetType("RefLiuyl.GetCon");
获取到类型后,我们需要实例化它。
通过System.Activator的CreateInstance方法来实例化它。
AssemblyName classlibrary = new AssemblyName("ClassLibrary");
// Assembly assembly = Assembly.Load(classlibrary);
Assembly assembly = Assembly.Load("ClassLibrary");
//通过GetType()获取类型
//获取类型,参数(名称空间+类)
Type type = assembly.GetType("ClassLibrary.Student");
//创建该对象的实例,object类型,参数(名称空间+类)
object instance = assembly.CreateInstance("ClassLibrary.Student");
//或者直接使用type
object instance1 = Activator.CreateInstance(type);
//当使用泛型
Type type = typeof(T);
T destObj = Activator.CreateInstance<T>();
Activator.CreateInstance(); 返回的就是 类实例 GetProperties(); 返回程序集类型中的所有属性
//通过GetType()获取类型
//获取类型,参数(名称空间+类)
Type type = assembly.GetType("ClassLibrary.Student");
foreach (PropertyInfo prop in type.GetProperties())
{
string namses= prop.Name;
}
返回的就是 程序集中 实例类的属性字段。
.net Reflection(反射)- 一的更多相关文章
- 代替Reflection(反射)的一些方法
Reflection(反射)是深入学习.Net必须掌握的技能之一.最初学Reflection的时候,的确是被惊住了,原来还可以这样.只要给你一个Assembly, 你就能获取到其中所有的类型,根据类型 ...
- 代替Reflection(反射)的一些方法(转)
作者:JustRun 林肯: http://www.cnblogs.com/JustRun1983/p/3830764.html 代替Reflection(反射)的一些方法(转) 2014-07-08 ...
- Java进阶之reflection(反射机制)——反射概念与基础
反射机制是Java动态性之一,而说到动态性首先得了解动态语言.那么何为动态语言? 一.动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化.比如常见 ...
- Java Reflection 反射基础
反射基础: package reflection; /** * Created by : Infaraway * DATE : 2017/3/2 * Time : 23:06 * Funtion : ...
- List GroupBy真实用法,Reflection(反射)用法,Enum用法,正则,搜索下拉布局
1.List GroupBy 用法 var _roomProducts = homesingProducts.GroupBy(t => t.RoomName); RoomedProducts ...
- java学习--Reflection反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制. ...
- PHP的Reflection反射机制
更多内容推荐微信公众号,欢迎关注: 原文地址: http://www.nowamagic.net/php/php_Reflection.php PHP5添加了一项新的功能:Reflection.这个功 ...
- C# 反射Reflection——反射反射程序员的快乐
一.什么是反射 反射Reflection:System.Reflection,是.Net Framework提供的一个帮助类库,可以读取并使用metadata. 反射是无处不在的,MVC-Asp.Ne ...
- Java之reflection(反射机制)——通过反射操作泛型,注解
一.反射操作泛型(Generic) Java采用泛型擦除机制来引入泛型.Java中的泛型仅仅是给编译器Javac使用的,确保数据的安全性和免去强制类型转换的麻烦.但是编译一旦完成,所有和泛型有关的类型 ...
- C# Reflection反射机制
一.反射 什么是反射 .Net的应用程序由几个部分:'程序集(Assembly)'.'模块(Module)'.'类型(class)'组成: 反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组 ...
随机推荐
- 导出csv xls文件数字会自动变科学计数法的解决方式
将数据导出excel文件变成科学计数法问题: 分析: 用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软件查看csv文件时就会变成科学技术法的表现形式. 其实这个 ...
- Server Error in '/' Application. IIS拒绝访问
昨天将改好的网站重写发布更新了一下,就出现这种问题.那是一个头两个大呀. 刚开始以为是文件夹没有IIS的访问权限,在网上找的好多答案都是temp文件夹没有权限,,但将IIS的权限都加上后,还是不行,同 ...
- java代码,输入n多个数,求其平均值,虽有重复,但是第二次,我就乱写了
总结:对象调用方法,与在main 里直接输出没什么大的区别,少用方法, 乱搞++++ package com.c2; import java.util.Scanner; public class DD ...
- keytool生成JKS证书的详细步骤及截图
注:防止有不必要的空格,尽量不要复制粘贴 1. 依据CFCA所提供的CN生成密钥存储文件和密钥对(创建JKS证书库) keytool -genkey -v -alias slserver -keyal ...
- Vue.js:事件处理器
ylbtech-Vue.js:事件处理器 1.返回顶部 1. Vue.js 事件处理器 事件监听可以使用 v-on 指令: v-on <div id="app"> &l ...
- PHP面向对象深入研究之【命名空间】与【自动加载类】
命名空间 避免类名重复,而产生错误. <?php require_once "useful/Outputter.php"; class Outputter { // outp ...
- Oracle10g客户端连接远程数据库配置图解
yuanwen:http://blog.csdn.net/DKZhu/article/details/6027933 一. 安装oracle客户端 1. 运行setup.exe,出现 2. ...
- C#字符串Split方法的误区
string s = "aaa1bbb2ccc1ddd"; string[] ss = s.Split("12".ToCharArray()); ...
- python's twenty-first day for me 抽象类和接口类以及多态
归一化设计: 不管是哪一个类的对象,都调用同一个函数去完成相似的功能. class Alipay: def pay(self,money): print('使用支付宝支付了%s' % money) c ...
- win7系统程序未响应怎么办
问题描述:出现“程序未响应...”而后系统程序就没有反应了. 解决方案:1.运行→输入“regedit”→hkey_current_usser/control panel/desktop/window ...