使用开关选择枚举值

时间:2015-08-13 17:03:47

标签: c# .net reflection enums

我是编程新手,所以我不知道自己在做什么。 我从不同的类中提取枚举值并将它们设置为getter和setter。

 namespace DataLayer.Entities
{
    public enum CourseModeOfDelivery
    {
        Online, ClassRoom, ELearning,
    }
    public class Course
    {
        public int ID { get; set; }
        public String CourseName { get; set; }
        public String Description { get; set; }
        public DateTime StartDate { get; set; }
        public DateTime EndDate { get; set; }
        public CourseModeOfDelivery CourseMode { get; set; }
    }

在courseRepository中读取此值

public static Course GetCourse(int id)
        {
            Course a = new Course();
            String GetCommand = "Select CourseName, Description, StartDate, EndDate, CourseMode from Course" + "Where ID = @CourseID";

            SqlConnection connection = DBManager.GetSqlConnection();
            SqlCommand command = new SqlCommand(GetCommand, connection);
            command.Parameters.AddWithValue("@StudentID", id);

            try
            {
                var reader = command.ExecuteReader();

                //Read the Command Object and then return details
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        a.ID = Convert.ToInt32(reader["ID"]);
                        a.CourseName = reader["CourseName"].ToString();
                        a.Description = reader["Description"].ToString();
                        a.StartDate = DateTime.Parse(reader["StartDate"].ToString());
                        a.EndDate = DateTime.Parse(reader["EndDate"].ToString());

                        var selection = CourseModeOfDelivery.ClassRoom;
                        switch (selection)
                        {
                            case CourseModeOfDelivery.ClassRoom:
                                a.CourseMode = CourseModeOfDelivery.ClassRoom;
                                return a.CourseMode;

                            case CourseModeOfDelivery.ELearning:
                                a.CourseMode = CourseModeOfDelivery.ELearning;
                                return a.CourseMode;
                            case CourseModeOfDelivery.Online:
                                a.CourseMode = CourseModeOfDelivery.Online;
                                return a.CourseMode;
                        }
                    a.CourseMode = 
                    }
                }
                else
                {
                    reader.Close();
                }
            }

要求是使用switch但不知道如何在那里提取数据。

1 个答案:

答案 0 :(得分:4)

这取决于您使用的数据库字段的类型。

如果是int那么:

a.CourseMode = (CourseModeOfDelivery) reader["CourseMode"];

如果是String那么:

a.CourseMode = (CourseModeOfDelivery) Enum.Parse(typeof(CourseModeOfDelivery), reader["CourseMode"].toString());

以下内容也可能对您有所帮助: