C#将字符串名称中的变量名称转换为变量的值

时间:2018-08-02 23:20:22

标签: c# html asp.net

我有一个ASP.NET Web App,后端使用C#编写。在C#代码中,我有一个常量,如下所示:

const string MAX_NAME_LENGTH = "20";

然后我有了一个名为TextInput的用户控件,该控件具有一个名为maxLength的属性。我想按以下方式在HTML中使用它:

<MyTagPrefix:TextInputFL maxLength = "MAX_NAME_LENGTH " runat="server"/>

请注意,我想在HTML中使用C#常量的名称(“ MAX_NAME_LENGTH”),并以某种方式在maxLength属性设置子句中将“ MAX_NAME_LENGTH”转换为分配的值(“ 20”):

public string maxLength
    {
        set
        {
           // Code to convert the provide string value of the C# constant's
           // name (in this case "MAX_NAME_LENGTH") into the constant's 
           // value ("20").
        }
     }

有人对如何将C#常量的名称转换为is值有任何想法吗?

2 个答案:

答案 0 :(得分:0)

首先,正如@mjwills在他的评论中所说,仅使用const变量的值而不是标签中的名称是有道理的。.但是由于某种原因,您不想这样做可以考虑将变量更改为键值对

using System.Collections.Generic;

Dictionary<string, int> constants = new Dictionary<String, int>(){ {"MAX_NAME_LENGTH", 20} };

然后您可以通过键访问值

public string maxLength
{
    set
    {
       // Code to convert the provide string value of the C# constant's
       // name (in this case "MAX_NAME_LENGTH") into the constant's 
       // value ("20").
         value = constants["MAX_NAME_LENGTH"]
    }
 }

有多种方法可以满足您的需求,但据我所知,这些方法并不可靠

答案 1 :(得分:0)

在这里检索。不知道如何使用它来初始化控件,但无论如何。

using System;
using System.Reflection;

class Constants
{
    public const string MIN_NAME_LENGTH = "10";
    public const string MAX_NAME_LENGTH = "20";

    public static string GetValue(string index)
    {
        return typeof(Constants)
            .GetField(index, BindingFlags.Public | BindingFlags.Static)
            .GetValue(null) as string;
    }
}

public class Program
{
    public static void Main()
    {
        Console.WriteLine(Constants.GetValue("MIN_NAME_LENGTH"));
        Console.WriteLine(Constants.GetValue("MAX_NAME_LENGTH"));
    }
}

输出:

10
20

Example on DotNetFiddle