`

利用.net反射调用 方法

阅读更多

2011-3-28
1. 利用.net反射调用 方法
  protected void invokeTheMethod(object theObject, string strMethod, object[] objParms)
        {
            Type objType = theObject.GetType();  //--得到对象的类型 cyj 2011-3-28
          
            MethodInfo method;  //--声明一个方法 cyj 2011-3-28
            try
            {
                method = objType.GetMethod(strMethod);  //--根据方法名称得到方法 cyj 2011-3-28
                method.Invoke(theObject, objParms);     //--连接类型与方法 cyj 2011-3-28
            }
            catch (Exception)
            {
                throw (new Exception("刷新分页控件出错"));
                // Response.Write(ex.ToString());
            }
        }

调用该方法:invokeTheMethod(uControls,"getString",null);

总结:1. 得到对象(用户控件uControls)的类型
      2. 声明一个方法
      3. 将方法与类型相连;

摘自:http://www.pqshow.com/program/aspnet/201101/15525.html

 

 

最近在维护一个Extjs的项目,所以前提基本上都是js,利用.net后台的交互获取数据。

故利用反射来执行页面的一些方法,可以省下不少事情。代码如下:

page_load方法中,实现反射代码,并添加一个需反射执行的方法。先看一个没有参数的函数:

 

代码

   protected void Page_Load(object sender, EventArgs e)
        {
          
            
string methordName = "GetResString"
;
            
// 或者
  methordName = Request.QueryString["action"];
            Type t = this
.GetType();
            MethodInfo method = t.GetMethod(methordName);
            
if (method != null
)
            {
                Response.Write((
string)method.Invoke(this,null
));
            }
            
        }

    public string GetResString() 
    {
        
return "Test";

    }

 

 

 

 运行的结果页面就可以在页面上输出Test字样了。

 

 添加一个需传参数的反射例子。

如:

代码

   protected void Page_Load(object sender, EventArgs e)
        {
          
            
string methordName = "GetResString"
;
            
// 或者
  methordName = Request.QueryString["action"];
            Type t = this
.GetType();
            
object[] paras={"小强",23};//方法需调用的参数

            Type[] typepara=new Type[paras.Length];
            
for(int i=0
;i<paras.Length;i++)
            {
                 typepara[i]=paras[i].GetType();
            }
            MethodInfo method = t.GetMethod(methordName,typepara);
            
if (method != null
)
            {
                Response.Write((
string)method.Invoke(this
, paras));
            }
            
        }

        
public string GetResString(string name,int
 age) 
        {
            
return string.Format("{0}已经{1}岁了"
, name, age);
        }

 

 

页面执行结果为:小强已经23岁了。

如果前台页面用:..Default.aspx?action=GetResString 也能达到同样的效果。

分享到:
评论

相关推荐

    C#Web服务Asp.net调用winFrom调用

    本主题将深入探讨如何在ASP.NET Web服务中调用WinForms应用程序的功能,以实现更复杂的系统集成和交互。 首先,我们需要理解Web服务的基本概念。Web服务是一种基于互联网的软件应用,它能够通过标准协议(如SOAP或...

    .net反射研究 带源码

    .NET反射是.NET Framework提供的一种强大的工具,它允许运行时的代码动态地获取类型信息,并能够创建和操作对象。...通过深入理解反射的工作原理和应用,开发者可以更好地利用.NET框架提供的各种功能,解决复杂问题。

    .net 反射的用法

    4. **调用方法**:通过反射可以调用类的方法,无论是实例方法还是静态方法。 ```csharp MethodInfo method = type.GetMethod("WriteString"); string s = (string)method.Invoke(obj, new string[] { "jianglijun...

    .net反射与特性的使用方法

    总的来说,.NET反射与特性是提升代码灵活性和可维护性的重要工具。理解并熟练掌握它们,能让你在.NET开发中游刃有余,编写出更加高效且易于扩展的代码。通过提供的`Reflection+AttributeDemo`项目,你可以更深入地...

    Visual Basic.net 反射参考手册.rar

    3. **调用方法和访问属性**:反射允许在运行时动态调用对象的方法和访问其属性。`MethodInfo.Invoke`用于执行方法,`PropertyInfo.GetValue`和`PropertyInfo.SetValue`用于访问和修改属性值。 4. **枚举类型和字段*...

    VB.NET 反射类属性名称

    在VB.NET编程中,反射是一种强大的机制,它允许运行时检查和操作程序集、类型、方法、属性等元数据。这个“VB.NET 反射类属性名称”主题聚焦于如何利用反射来获取或设置类中特定属性的值,尤其是当我们只知道属性的...

    .net中的反射,asp.net反射

    通过System.Reflection命名空间中的类,如Type、MethodInfo、ConstructorInfo等,我们可以动态地探索和利用.NET类型系统。 二、反射的基本操作 1. 获取类型信息:通过Type类,我们可以获取任何类型的完整信息,包括...

    visual Basic.NET反射参考手册

    自由加载程序集,创建对象和调用方法 利用反射修改对象数据

    在VB.net中,利用反射,获得项目中所有公用对象的属性、方法、事件等

    通过反射,我们可以动态地创建对象、调用方法、访问属性,甚至发现和利用未知类型的特性。在本场景中,目标是获取VB.NET项目中所有公共对象的属性、方法和事件。以下是对这一主题的详细解释: 1. **反射概念**: ...

    .NET中的反射机制

    以下是对.NET反射机制七大关键问题的详细说明: 1. **类型信息获取**: 反射机制使程序员能够在运行时获得关于类型的所有信息。通过`Type`类,我们可以获取到任何类型的元数据,包括类名、命名空间、基类、接口、...

    vb.net 调用DLL

    综上所述,VB.NET调用DLL涉及多个方面,包括但不限于理解DLL的工作原理、掌握正确的调用方法、注意细节问题以及处理潜在的错误。通过合理运用这些技术,开发者可以有效地集成现有组件,提升应用程序的功能性和性能。

    在C++中反射调用.NET的方法(三)

    总的来说,要在C++中反射调用.NET的集合数据,关键在于利用`IEnumerable`接口作为桥接,将.NET的泛型集合转换为C++的数据结构。这个过程涉及到类型转换、委托绑定以及反射调用等多个步骤,需要对C++/CLI和.NET框架有...

    .NET中反射的应用 获取Dll参数

    - 获取DLL中的方法、字段、属性等信息,然后通过反射调用。 总结起来,反射是.NET框架中的一个重要特性,它允许我们在运行时动态地操作类型和对象,提高了代码的灵活性。在VB.NET和C#中,我们可以利用反射来获取...

    【ASP.NET编程知识】浅谈.NET反射机制的性能优化 附实例下载.docx

    本文将深入探讨.NET反射机制的性能优化策略,并通过比较不同调用方式的性能,给出实际的优化建议。 首先,我们要理解反射的工作原理。反射允许程序在运行时获取类型信息并执行相关的操作,如创建对象、调用方法、...

    .NET/C#利用反射调用含ref或out参数的方法示例代码

    在.NET框架中,C#语言提供了反射这一强大的特性,允许我们在程序运行时动态地获取类型信息和调用方法。在本文中,我们将深入探讨如何利用反射调用包含`ref`和`out`参数的方法。 首先,理解`ref`和`out`关键字在C#中...

    Visual Basic.net 反射参考手册

    在.NET框架中,反射是一个强大的工具,它允许程序在运行时检查自身和其他程序集的元数据,从而实现动态类型操作、实例化对象、调用方法、访问字段等。本参考手册将深入探讨如何在Visual Basic .NET中有效地利用反射...

    .NET反射实例

    4. 调用方法:使用MethodInfo的Invoke方法调用方法,如`method.Invoke(obj, parameters);` 三、动态类型转换 反射还可以用于实现动态类型转换,例如将一个对象转换为预期类型,即使在编译时无法确定该类型。`if ...

    .net反射示例,很有肜的咯

    .NET反射是.NET Framework提供的一种强大的工具,它允许程序在运行时检查自身,发现并操作类型、成员、属性、方法等信息。...通过学习和熟练掌握反射,开发者可以更好地利用.NET Framework的强大功能。

    .net中attribute实现方法调用拦截(就是aop)

    在.NET中,我们可以通过Attribute来实现AOP的功能,这就是标题中提到的"attribute实现方法调用拦截"。 Attribute的使用通常是通过定义自定义Attribute类,然后在需要的地方应用这些特性。例如,我们可以创建一个`...

Global site tag (gtag.js) - Google Analytics