zoukankan      html  css  js  c++  java
  • C# 反射获得类名,私有方法,动态执行方法,返回多个值

    我的广告单元,有空点一下哦,谢谢!

    直接上例子了,废话不多说,大家一看就懂。

    代码内容:

    实体类:

    public class userinfo
    {
    public userinfo()
    { }

    #region 成员
    private int _userid;
    private string _username;
    private string _password;
    private int _roleid;
    private string _telephone;
    private string _usersex;
    private string _address;
    private string _email;
    private string _logintime;
    private string _createtime;
    #endregion


    #region 属性
    public int userid
    {
    get { return _userid; }
    set { _userid = value; }
    }

    public string username
    {
    get { return _username; }
    set { _username = value; }
    }

    public string password
    {
    get { return _password; }
    set { _password = value; }
    }

    public int roleid
    {
    get { return _roleid; }
    set { _roleid = value; }
    }

    public string telephone
    {
    get { return _telephone; }
    set { _telephone = value; }
    }

    public string usersex
    {
    get { return _usersex; }
    set { _usersex = value; }
    }

    public string address
    {
    get { return _address; }
    set { _address = value; }
    }

    public string email
    {
    get { return _email; }
    set { _email = value; }
    }

    public string logintime
    {
    get { return _logintime; }
    set { _logintime = value; }
    }

    public string createtime
    {
    get { return _createtime; }
    set { _createtime = value; }
    }

    private string ReturnAutoID()
    {
    return "userid";
    }
    #endregion

    }

    反射方法类:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    namespace Reflecti
    {
    public class GetModelInfo
    {
    /// <summary>
    /// 通过反射获得对象名称和自动增长ID
    /// </summary>
    /// <param name="obj">对象</param>
    /// <returns>返回string数组</returns>
    public static string[] Core(Object obj)
    {
    string[] str=new string[2];
    Type T = obj.GetType();
    MethodInfo mi = T.GetMethod("ReturnAutoID",
    BindingFlags.NonPublic
    | BindingFlags.Instance,
    null, new Type[] { }, null);
    //通过反射执行ReturnAutoID方法,返回AutoID值
    string str1 = mi.Invoke(obj, null).ToString();
    str[1] = str1;
    str[0] = T.Name.ToString();
    //返回该Obj的名称以及ReturnAutoID的值
    return str;
    }
    }
    }


    调用:
    userinfo _userinfo = new userinfo();
    MessageBoxShow("实体类类名:"GetModelInfo.Core(_userinfo)[1] + " 自动ID:"+GetModel.Core(_userinfo)[0]);



    OK,赶快测试下吧,通过这个例子你可以举一反三,获得很多其他的收获

    其他知识点:

    使用 Assembly 定义和加载程序集,加载在程序集清单中列出的模块,以及从此程序集中查找类型并创建该类型的实例。

    使用 Module 了解如下的类似信息:包含模块的程序集以及模块中的类等。您还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。

    使用 ConstructorInfo 了解以下信息:构造函数的名称、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtual)等。使用 Type 的 GetConstructors 或 GetConstructor 方法来调用特定的构造函数。

    使用 MethodInfo 了解以下信息:方法的名称、返回类型、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtual)等。使用 Type 的 GetMethods 或 GetMethod 方法来调用特定的方法。

    使用 FieldInfo 了解以下信息:字段的名称、访问修饰符(如 public 或 private)和实现详细信息(如 static)等;并获取或设置字段值。

    使用 EventInfo 来了解如下的类似信息:事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等;并添加或移除事件处理程序。

    使用 PropertyInfo 来了解如下的类似信息:属性的名称、数据类型、声明类型、反射类型和只读或可写状态等;并获取或设置属性值。

    使用 ParameterInfo 来了解如下的类似信息:参数的名称、数据类型、参数是输入参数还是输出参数,以及参数在方法签名中的位置等。

  • 相关阅读:
    Python学习札记(十五) 高级特性1 切片
    LeetCode Longest Substring Without Repeating Characters
    Python学习札记(十四) Function4 递归函数 & Hanoi Tower
    single number和变体
    tusen 刷题
    实验室网站
    leetcode 76. Minimum Window Substring
    leetcode 4. Median of Two Sorted Arrays
    leetcode 200. Number of Islands 、694 Number of Distinct Islands 、695. Max Area of Island 、130. Surrounded Regions 、434. Number of Islands II(lintcode) 并查集 、178. Graph Valid Tree(lintcode)
    刷题注意事项
  • 原文地址:https://www.cnblogs.com/qidian10/p/2143761.html
Copyright © 2011-2022 走看看