-1

というテーブルがありますDynamicControl。これには、SQL Server 2008 データベースにあるという名前のプロパティControlTypeがあります。nvarchar(255)

コードでは、プロパティ値を文字列にしたいのですが、その文字列値は次のように列挙型の文字列表現から取得する必要があります。

public enum ControlType
{
    TextBox,
    TextArea,
    Password,
    RadioButton,
    Checkbox,
    DropDownList,
    MultiSelectList,
    DatePicker,
    TimePicker,
    DateTimePicker
}

それ、どうやったら出来るの?

更新 情報を提供せずに重要な情報を追加するのを忘れていました。これはばかげた質問のように聞こえるかもしれません。ちょっとしたことです:私はPOCOを使用していません。Entity Framework で生成されたモデル クラスを使用するという従来の制限があります。私が POCO を書いていたら、単純にデータ型を列挙型に変更したでしょう。ただし、生成されたモデルを使用しているため、これを行うと EDMX マークアップとモデル クラスに違いが生じます。

更新私の質問は、Entity Framework に EDMX で適切なマークアップを生成して、上記のプロパティが文字列または Int32 ではなく ControlType 列挙型になるように指示するにはどうすればよいですか?

したがって、私の質問は、列挙型を文字列に、またはその逆に変換する方法ではありません

4

3 に答える 3

0

If I got it correct then you need something similar with little fine-tuning

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();
        }
    }
}
于 2013-05-07T13:19:24.070 に答える
0

.Net フレームワークの列挙型クラスには、ypu を支援する多くの静的メンバー関数があります。DB から dbCtrlType という名前の文字列変数に nvarchar 値をフェッチすると仮定すると、

 public ControlType ControlTypeEnum
 {
     get { return (ControlType)Enum.Parse(typeof(ControlType), dbCtrlType); }
     set { dbCtrlType = dbCtrlType.ToString(); }
 }
于 2013-05-07T13:15:54.343 に答える