我有一个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值有任何想法吗?
答案 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