当前位置:编程学习 > C#/ASP.NET >>

对C#中的反射和属性在实际编程中的用处不了解。

MSDN上是这样说的。

反射在下列情况下很有用:

需要访问程序元数据的属性。
检查和实例化程序集中的类型。
在运行时构建新类型。使用 System.Reflection.Emit 中的类。
执行后期绑定,访问在运行时创建的类型的方法。

谁能详细解试一下? --------------------编程问答-------------------- 反射主要涉及两个类:Type和Assambly
可以通过反射访问程序集的元数据、方法、属性等 --------------------编程问答-------------------- 关键是这一句:执行后期绑定.

这意味着你可以写好程序之后,在程序执行的时候,再动态的加入另外一些功能. --------------------编程问答-------------------- Assambly 用得比较多,主要在一些工厂的实现中。 --------------------编程问答-------------------- 举个例:

没有引用类时
或者说你要引用的类都还没加载
那么你是无法直接实例化这个类的
因为编译器没法找到类定义

但是你却知道类的名字
那么这个时候就用反射 在运行期来来实例化类 --------------------编程问答-------------------- 楼上正解,如果没有反射,VS.net ide怎么工作? --------------------编程问答-------------------- 好像我做到一个工程一样

要根据下拉框的名字,来确定需要实际化哪个DLL和类,就要用反射了,如果不用反射,就要实际化好所有的类,然后用IF一个一个判断,烦死了 --------------------编程问答-------------------- 给你个例子参考一下,例如,我想我整个系统获得程序版本的信息:我先定义一个属性类
/// <summary>
///获取软件的版本
/// </summary>
[AttributeUsage(AttributeTargets.Class)]
public class Class_Version:System.Attribute   
{
private string version0; 

public Class_Version(string s)
{
this.version0=s;
}
public string Soft_Version
{
get
{
return version0;
}

}
} --------------------编程问答-------------------- 那么我在程序的主程序开头实例话属性类
         [Class_Version("V3.5")]
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.ToolBar toolBar1;
。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。
      } --------------------编程问答-------------------- 我在其他地方要获得程序的版本信息时通过反射就可获得:
//获取版本信息
System.Reflection.MemberInfo meminfo=typeof(Form1);
Class_Version ver=(Class_Version)Attribute.GetCustomAttribute(meminfo,typeof(Class_Version));
MessageBox.Show(this," 浙江省 \n 版本:"+ver.Soft_Version+"\n\n  程序编写\n\”) --------------------编程问答-------------------- 当要改变版本信息时,只要改变构造函数 [Class_Version("V3.5")]信息即可,不要到处修改 --------------------编程问答-------------------- 这是个简单的应用,呵呵,供楼主参考
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,