文章类型: .NET
关键词: C#,Reflection,convert,string,variable
内容摘要:

浅淡反射问题

2015/7/29 14:47:07    来源:apple    阅读:

今天我先不说反射可以为我们解决什么问题,从一个实际的问题出发来简单的讨论一下反射问题。

有这样的一个实际问题,两个变量:
string m_str1 = "m_str2";
string m_str2 = "This is a test!";
现在的问题:如何利用m_str1得到"This is a tset!"(不能用m_str2),也就是说,如何让m_str1里的值成为一个新的变量。

在此之前,我找到了个解决方案的网站,得其中一个的启示,用到了反射。这里是网址:
http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.languages.csharp/2005-04/msg03271.html

解决示例(Code):

using System;

using System.Reflection;

using System.Security;

 

public class Sample

{

    static public string m_str1 = "This is a test!";

    static public string m_str2 = "m_str1";

 

 

    unsafe public static void Main()

    {

        FieldInfo m_field = Type.GetType("Sample").GetField(m_str2);

        Console.WriteLine(m_field.GetValue(m_str2));

    }

}

实际应用:
  在实际的项目中,我遇到这样的一个问题,我在一个类里添加很多静态的字符串做为资源,有一些很长,但很一个都按结构分好了类,在类名为:WaveTextManager里,其中有一些提示用户操作错误的字符串。那么当用户操作错误的时候,把用户导入到错误页面上,然后根据参数来选择提示信息。部份代码:

     private void Page_Load(object sender, System.EventArgs e)

    {

        // Put user code to initialize the page here

        string m_msgType = Request["ErrorType"];

        WaveTextManager.ErrorMsg m_errorType = new WaveTextManager.ErrorMsg();

        if (m_msgType == null) return;

        FieldInfo m_errorField = m_errorType.GetType().GetField(m_msgType);

        if (m_errorField == null) return;

        string m_errorMsg = m_errorField.GetValue("Webb.WAVE.Controls.ErrorMsg").ToString();

        if (m_errorMsg == null) return;

        Response.Write(m_errorMsg);

    }

好了,这里只是简单的利用一个实际问题来讨论一下反射问题,在理论上,可以用反射来完成一个类似ILDasm的工具出来。

↑ 上一篇文章:C# 中堆栈,堆,值类型,引用类型的理解 关键词:C#,堆栈,堆,值类型,引用类型 发布日期:2015/7/29 14:44:47
↓ 下一篇文章:文件读写与XML解析 关键词:文件,读写,XML,解析 发布日期:2015/7/29 14:48:09
相关文章:
C#中的空值判断 关键词:C#,空值,NULL,"",String.Empty,string.Empty,DBNULL,C.. 发布日期:2015-07-29 10:43
日期DateTime类型在.net中模糊查询SQL数据库的思路分析 关键词:日期类型,DateTime,C#,.net,模糊查询,like查询,SQL,Server,数据库.. 发布日期:2015-07-14 15:51
C#+ajax上传文件 关键词:ajax,c#,xmlhttprequest,string,url,javascript 发布日期:2015-07-28 17:00
相关目录:.NET软件开发ANDROID
我要评论
正在加载评论信息......