网站首页  招生报考  高考复习  汉语字词  英语词汇  写作素材  旧版资料

请输入您要查询的范文素材:

 

标题 .net学习心得
内容     1.反射:反射是.net中的重要机制,通过反射可以在运行时获得.net中每一个类型,包括类、结构、委托和枚举的成员,包括方法、属性、事件,以及构造函数等。有了反射,既可以对每一个类型了如指掌。
    下面来演示一下反射的实例
    (1)新建一个类库项目。在解决方案上单击右键选择添加“新建项目”,在弹出来的框中选择“类库”,在下面名字栏中输入classlib。然后删除class1类,新添加一个类“classperson”,添加如下代码:
    namespace classlib
    {
        public class classperson
        {
            public classperson():this(null)
            {
            }
            public classperson(string strname)
            {
                name = strname;
            }
            private string name;
            private string sex;
            private int age;
            public string name
            {
                get { return name; }
                set { name = value; }
            }
            public string sex
            {
                get { return sex; }
                set { sex = value; }
            }
            public int age
            {
                get { return age; }
                set { age = value; }
            }
            public void sayhello()
            {
                if (null==name)
                    console.writeline("hello world");
                else
                    console.writeline("hello," + name);  
            }
        }
    }
    添加完之后编译生成一下,就会在这个类库项目中的bindebug中有一个classlib.dll文件。然后添加一个控制台应用程序。引入system.reflaction的命名空间。添加的代码如下:
    using system;
    using system.collections.generic;
    using system.linq;
    using system.text;
    using system.reflection;//添加反射的命名空间
    namespace consoleapplication4
    {
        public class program
        {
            static void main(string[] args)
            {
                console.writeline("列出程序集中的所有类型");
                assembly ass = assembly.loadfrom("classlib.dll");
                type[] mytype = ass.gettypes();
                type classperson = null;
                foreach (type p in mytype)
                {
                    console.writeline(p.name);
                    if (p.name=="classperson")
                    {
                        classperson = p;
                    }
                }
                console.writeline("列出classpersonl类中的所有的方法");
                methodinfo[] md = classperson.getmethods();
                foreach(methodinfo m in md)
                {
                    console.writeline(m.name);
                }
                console.writeline("实例化classperson类,并调用sayhello方法");
                object obj = activator.createinstance(classperson);
                object objname=activator.createinstance(classperson,"飞鹰");
                methodinfo mysayhello = classperson.getmethod("sayhello");
                mysayhello.invoke(obj, null);//无参数构造函数
                mysayhello.invoke(objname, null);//有参构造函数
                console.readkey();      
            }
        }
    }
    运行之后的结果是:
    列出程序集中的所有类型
    classperson
    列出classpersonl类中的所有的方法
    get_name
    set_name
    get_sex
    set_sex
    get_age
    set_age
    sayhello
    tostring
    equals
    gethashcode
    gettype
    实例化classperson类,并调用sayhello方法
    hello world
    hello,飞鹰
    2.using的作用
    (1)引入命名空间,如:using system。
    (2)using别名。
    格式:using 别名=包括详细命名空间信息的具体的类型
     例如:在两个命名空间(namespace1,namespace2)里各有一个myclass类,这时可以这样引入命名空间,
    using aclass=namespace1.myclass;
    using bclass=namespace2.myclass;
    实例化时:
    aclass my1=new aclass;
    bclass my2=new bclass;
    (3)using定义范围
    即时释放资源,在范围结束时处理对象。例如:
    using(class1 cls1=new class1())
    {
    }
    在这个代码段结束时会触发cls1的dispose方法释放资源。
随便看

 

大学招生报考网高考作文范文素材大全提供海量高考语文和英语作文范文及写作素材,基本覆盖所有常见体裁及热点主题的作文素材,是不可多得的高考复习资料库。

 

Copyright © 2002-2024 feapp.net All Rights Reserved
更新时间:2025/5/24 11:49:47