我有一张名为DynamicControl
的表格。它有一个名为ControlType
的属性,在SQL Server 2008数据库中为nvarchar(255)
。
在代码中,我希望属性值是一个字符串,但它的字符串值必须来自枚举的字符串表示,如下所示:
public enum ControlType
{
TextBox,
TextArea,
Password,
RadioButton,
Checkbox,
DropDownList,
MultiSelectList,
DatePicker,
TimePicker,
DateTimePicker
}
我该怎么做?
更新 我忘了添加一些重要的信息,但没有提供哪些,这可能听起来像一个愚蠢的问题。这一点是:我没有使用POCO。我受遗留约束使用Entity Framework生成的模型类。如果我正在编写POCO,我只需将数据类型更改为枚举。但是,由于我使用生成的模型,这样做会导致EDMX标记和模型类之间的差异。
更新我的问题是,如何告诉Entity Framework在EDMX中生成正确的标记,以便所述属性的类型为ControlType枚举而不是字符串或Int32?
因此,我的问题是不 如何将枚举转换为字符串,反之亦然。
答案 0 :(得分:0)
只需将您的属性定义为枚举类型(即:ControlType)
即可答案 1 :(得分:0)
public ControlType ControlTypeEnum
{
get { return (ControlType)Enum.Parse(typeof(ControlType), dbCtrlType); }
set { dbCtrlType = dbCtrlType.ToString(); }
}
答案 2 :(得分:0)
如果我弄错了,那么你需要一些类似的微调
using System;
using System.ComponentModel;
namespace ConsoleApplication1
{
public enum ControlDefaultClass
{
[Description("This is some string which you wanted to show")] MemberA,
[Description("This is some other string which you wanted to show")] MemberB,
}
public class ConsoleApp
{
private static void Main(string[] args)
{
Console.WriteLine(GetDescription(ControlDefaultClass.MemberA)); //This line will print - This is some string which you wanted to show
Console.WriteLine(GetDescription(ControlDefaultClass.MemberB));//This line will print - This is some other string which you wanted to show
Console.Read();
}
public static string GetDescription(Enum value)
{
var fieldInfo = value.GetType().GetField(value.ToString());
var attributes =
(DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
return attributes.Length > 0 ? attributes[0].Description : value.ToString();
}
}
}