http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 28528|回复: 5
打印 上一主题 下一主题

[Winform] C#关于反射操作类有参数和无参数方法并返回数据的方法(附源码)

[复制链接]
跳转到指定楼层
楼主
发表于 2013-3-22 18:17:32 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
关于反射操作类有参数和无参数方法并返回数据的方法(附源码)
源码下载 fangshelizi.rar (38.69 KB, 下载次数: 760)
刚开始是有一个群里的朋友在问怎么调用方法,
下面我就以一个例子来说明一下吧,
首先是建一个student的类,代码如下
[code=csharp]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace fangshelizi
{
    public class student
    {
        public string name()
        {
            return "苏飞";
        }
        public string sex()
        {
            return "男";
        }
        public string resultStr(string str)
        {
            return str;
        }
    }
}
[/code]
然后一个窗体如下

先来看看不带参数访问的方式吧
[code=csharp] private void button1_Click(object sender, EventArgs e)
        {
            Assembly assembly = Assembly.Load("fangshelizi");

            //获取类型,参数(名称空间+类)   
            Type type = assembly.GetType("fangshelizi.student");

            //创建该对象的实例,object类型,参数(名称空间+类)   
            object instance = assembly.CreateInstance("fangshelizi.student");

            //name就是方法名称  instance是要执行的类对象 null是参数列表,没有就传Null
            object value = type.GetMethod("name").Invoke(instance, null);
            richTextBox1.Text = value.ToString();
        }[/code]
效果如下

带参数的访问方式
[code=csharp] private void button2_Click(object sender, EventArgs e)
        {
            Assembly assembly = Assembly.Load("fangshelizi");

            //获取类型,参数(名称空间+类)   
            Type type = assembly.GetType("fangshelizi.student");

            //创建该对象的实例,object类型,参数(名称空间+类)   
            object instance = assembly.CreateInstance("fangshelizi.student");

            //设置resultStr方法中的参数类型,Type[]类型;如有多个参数可以追加多个   
            Type[] params_type = new Type[1];
            params_type[0] = Type.GetType("System.String");
            //设置resultStr方法中的参数值;如有多个参数可以追加多个   
            Object[] params_obj = new Object[1];
            params_obj[0] = "我传一个网址试试www.sufeinet.com";

            //resultStr就是方法名称  instance是要执行的类对象 params_obj是参数列表,没有就传Null
            object value = type.GetMethod("resultStr").Invoke(instance, params_obj);
            richTextBox1.Text = value.ToString();
        }[/code]
效果如下




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
沙发
 楼主| 发表于 2013-4-8 14:22:14 | 显示全部楼层
C#(ASP.NET)中利用反射遍历类的属性
[code=csharp] 假设有一个类UserInfo.cs

public class UserInfo
{
       public string WebSite;
       public string WebSiteName;
}


现在有一个实例化的对象:
UserInfo user = new UserInfo();
user.WebSite= "www.sufeinet.com";
user.WebSiteName = "苏飞";


下面使用反射将这个对象的各个属性名和对应的值取出来

Type t = user.GetType();//  typeof(UserInfo);    //这里的user就是上面的具体实例对象
foreach (System.Reflection.PropertyInfo prop in t.GetProperties())     //取得所有属性
{
         MessageBox.Show(prop.Name + " - " + prop.GetValue(user,null));    //取得每一个属性名和对应的值
}[/code]
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-16 05:33

© 2014-2021

快速回复 返回顶部 返回列表