C# 使用开关选择枚举值
我是编程新手,所以我不知道自己在做什么。 我从不同的类中提取枚举值,并将它们设置为getter和setterC# 使用开关选择枚举值,c#,.net,reflection,enums,C#,.net,Reflection,Enums,我是编程新手,所以我不知道自己在做什么。 我从不同的类中提取枚举值,并将它们设置为getter和setter namespace DataLayer.Entities { public enum CourseModeOfDelivery { Online, ClassRoom, ELearning, } public class Course { public int ID { get; set; } pu
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,但不知道如何将数据拉入其中。这取决于您使用的数据库字段的类型 如果是
int
,则:
a.CourseMode = (CourseModeOfDelivery) reader["CourseMode"];
如果是字符串
,则:
a.CourseMode = (CourseModeOfDelivery) Enum.Parse(typeof(CourseModeOfDelivery), reader["CourseMode"].toString());
以下内容也可能对您有所帮助:
int
,则:
a.CourseMode = (CourseModeOfDelivery) reader["CourseMode"];
如果是字符串
,则:
a.CourseMode = (CourseModeOfDelivery) Enum.Parse(typeof(CourseModeOfDelivery), reader["CourseMode"].toString());
以下内容也可能对您有所帮助:
选择设置为静态值,然后将其打开。因此,您将始终执行第一个case语句,并且您的开关仅重新分配以前设置的值。我只是尝试保存用户从下拉列表中选择的内容,并将其保存到.CourseMode,就像我在a.StartDate和a.EndDate中所做的那样,因为我用户将有3个从下拉到选择的选项,所以我使用了要回答这个问题,我们需要更多的上下文。如何从下拉列表中获取值?你在用WPF吗?您在哪里编辑用户帐户?这里介绍的GetUser方法似乎只关心从数据库中读取数据,对吗?你编辑条目的代码在哪里?你所说的正确是什么意思?您的语法是正确的(除了开关后的不完整赋值之外),开关内的赋值也应该有效。唯一奇怪的是,您将选择设置为静态值,然后将其打开。因此,您将始终执行第一个case语句,并且您的开关仅重新分配以前设置的值。我只是尝试保存用户从下拉列表中选择的内容,并将其保存到.CourseMode,就像我在a.StartDate和a.EndDate中所做的那样,因为我用户将有3个从下拉到选择的选项,所以我使用了要回答这个问题,我们需要更多的上下文。如何从下拉列表中获取值?你在用WPF吗?您在哪里编辑用户帐户?这里介绍的GetUser方法似乎只关心从数据库中读取数据,对吗?编辑条目的代码在哪里?