| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 233 人关注过本帖
标题:在我实际工作中反射技术的应用(1)
收藏  订阅  推荐  打印 
ioriliao
Rank: 12Rank: 12Rank: 12
来自:广东
等级:贵宾
威望:29
帖子:2122
积分:23963
注册:2006-11-30
在我实际工作中反射技术的应用(1)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
//和大家分享一下自己在工作中用到反射技术的一些简单应用
//此案例应用场景是这个样子的:
//在我的项目中有很多的DLL, 每个DLL都有一个Mark属性,是用
//来标识这个DLL作用的中文名称来的,因为我要知道这个DLL是作
//什么用的,那么就只有取得其Mark属性.
//此紧紧作为一个示例..
//备注:我用到了c#2008的新特性,关键字var,若不明白,请msdn.
namespace ReflectionTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入DLL文件的路径");
            var pathFile = Console.ReadLine();
            //载入程序集
            var myAssembly = Assembly.LoadFrom(@pathFile);
            //取得程序集myAssembly的所有类型
            var types = myAssembly.GetTypes();
            
            //遍历类型,以获得类开的属性
            foreach (var type in types)
            {
                //获得类型属性集
                var props = type.GetProperties();
                //实例化此类型
                var typeFlection = System.Activator.CreateInstance(type);

                foreach (var prop in props)
                {
                    //属性名称是否是"Mark"
                    if (prop.Name == "Mark")
                    {
                        //取得属性值
                        var obj = prop.GetValue(typeFlection, null);
                        var MarkValue = obj;
                        Console.WriteLine("Mark的值为:{0}", MarkValue);
                    }
                }
            }
            Console.ReadLine();
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace cls1
{
    public class Class1
    {
        private string m1;
        public Class1()
        {
            m1 = "cls1.Class1";
        }
        public string Mark
        {
            get { return m1; }
        }
    }


    public class Class2
    {
        private string m1;
        public Class2()
        {
            m1 = "cls1.Class2";
        }
        public string Mark
        {
            get { return m1; }
        }
    }

    public class Class3
    {
        private string m1;
        public Class3()
        {
            m1 = "cls1.Class3";
        }
        public string Mark
        {
            get { return m1; }
        }
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace cls2
{
    public class Class1
    {
        private string m1;
        public Class1()
        {
            m1 = "cls2.Class1";
        }
        public string Mark
        {
            get { return m1; }
        }
    }


    public class Class2
    {
        private string m1;
        public Class2()
        {
            m1 = "cls2.Class2";
        }
        public string Mark
        {
            get { return m1; }
        }
    }

    public class Class3
    {
        private string m1;
        public Class3()
        {
            m1 = "cls2.Class3";
        }
        public string Mark
        {
            get { return m1; }
        }
    }
}

搜索更多相关主题的帖子: 反射  
2008-8-22 11:51
guang
Rank: 4
等级:高级会员
威望:6
帖子:705
积分:7466
注册:2006-4-3

什么语言,C#不C#,VB不VB的......

不相信未作牺牲竟先可拥有,只相信靠双手找到我的欲求!!
我的博客:http://liao5930.blog.163.com
2008-8-22 16:11
ioriliao
Rank: 12Rank: 12Rank: 12
来自:广东
等级:贵宾
威望:29
帖子:2122
积分:23963
注册:2006-11-30

vs2008的新特性,你不知道吗?

105本高清PDF电子书 :http://www.cnblogs.com/ioriliao/archive/2008/10/20/1315343.html
VB爱好者1号群:31556786
2008-8-22 16:45
天使不哭
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:22
帖子:624
积分:6944
注册:2006-7-9

还是用C#的公用语法,不要老赶潮流,你是永远赶不上微软的步伐的

C#Winform技术群:25380362
C#Winform技术群2:44348381
C#Winform技术群3:34172317    大家看哪个没有满人就加哪吧,因为群经常满,所以我们会清理两周内不发言的人。
2008-8-22 20:02
天使不哭
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:22
帖子:624
积分:6944
注册:2006-7-9

ioriliao 在 2008-8-22 16:45 的发言:

vs2008的新特性,你不知道吗?
var 关键字在delphi早就有了,但是这里对于一些刚起步的新手还是很难明白。

C#Winform技术群:25380362
C#Winform技术群2:44348381
C#Winform技术群3:34172317    大家看哪个没有满人就加哪吧,因为群经常满,所以我们会清理两周内不发言的人。
2008-8-22 20:04
ioriliao
Rank: 12Rank: 12Rank: 12
来自:广东
等级:贵宾
威望:29
帖子:2122
积分:23963
注册:2006-11-30

我就喜欢赶这潮流...

105本高清PDF电子书 :http://www.cnblogs.com/ioriliao/archive/2008/10/20/1315343.html
VB爱好者1号群:31556786
2008-8-22 21:06
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.067886 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved