| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1149 人关注过本帖, 2 人收藏
标题:在我实际工作中反射技术的应用(1)
只看楼主 加入收藏
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
结帖率:78.95%
收藏(2)
 问题点数:0 回复次数:5 
在我实际工作中反射技术的应用(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-08-22 11:51
guang
Rank: 4
来 自:广东深圳
等 级:贵宾
威 望:13
帖 子:1414
专家分:285
注 册:2006-4-3
收藏
得分:0 
什么语言,C#不C#,VB不VB的......

不相信未作牺牲竟先可拥有,只相信靠双手找到我的欲求!!
我的博客:http://liao5930.blog.
2008-08-22 16:11
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
vs2008的新特性,你不知道吗?

/images/2011/147787/2011051411021524.jpg" border="0" />
2008-08-22 16:45
天使不哭
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:677
专家分:22
注 册:2006-7-9
收藏
得分:0 
还是用C#的公用语法,不要老赶潮流,你是永远赶不上微软的步伐的

C#Winform技术群:25380362
博客:http:///boyliupan/
2008-08-22 20:02
天使不哭
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:677
专家分:22
注 册:2006-7-9
收藏
得分:0 
[bo][un]ioriliao[/un] 在 2008-8-22 16:45 的发言:[/bo]

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



var 关键字在delphi早就有了,但是这里对于一些刚起步的新手还是很难明白。

C#Winform技术群:25380362
博客:http:///boyliupan/
2008-08-22 20:04
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
我就喜欢赶这潮流...

/images/2011/147787/2011051411021524.jpg" border="0" />
2008-08-22 21:06
快速回复:在我实际工作中反射技术的应用(1)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017225 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved