C# 将对象从下拉列表强制转换为可为null的类型

C# 将对象从下拉列表强制转换为可为null的类型,c#,asp.net,C#,Asp.net,我的aspx中有以下下拉列表: <aspx:DropDownList ID="ddl1" runat="server"/> 类型为CustomType的LocationOfData返回。编辑:CustomType是一个枚举 我希望能够做到以下几点: CustomType? myvar = ddl1.Text 换句话说,使用my CustomType创建一个可为空的变量,并将其设置为下拉列表中的变量。但是我只能从ddl1中检索文本(字符串)的类型。如果CustomType是枚举,则

我的aspx中有以下下拉列表:

<aspx:DropDownList
ID="ddl1"
runat="server"/>
类型为CustomType的LocationOfData返回。编辑:CustomType是一个枚举

我希望能够做到以下几点:

CustomType? myvar = ddl1.Text

换句话说,使用my CustomType创建一个可为空的变量,并将其设置为下拉列表中的变量。但是我只能从ddl1中检索文本(字符串)的类型。

如果
CustomType
是枚举,则首先必须将
ddl1.Text
解析为枚举,然后将其强制转换为可为空的类型:

CustomType? myvar = (CustomType?) Enum.Parse(typeof(CustomType), ddl1.Text, true)

如果
CustomType
enum
,我将在绑定到enum的
byte
值时设置下拉列表的值,而不是绑定enum的名称。然后,当您尝试强制转换到
自定义类型时,您只需执行以下操作:

CustomType myvar = (CustomType)byte.Parse(ddl1.Text);
首先进行检查以创建可为空的类型。我不知道你的标准是什么,但是:

CustomType? myvar;
if(/*Criteria*/)
{
    myvar = (CustomType)byte.Parse(ddl1.Text);
}
else
{
    myvar = null;
}

CustomType的定义是什么?在进一步检查我的问题之后,我意识到CustomType是一个值的枚举。string是一个引用类型,您只需要为值类型创建一个可为null的变量。如果CustomType被定义为公共枚举CustomType{etc..},那么应该可以创建一个可为null的类型CustomType吗?
CustomType? myvar;
if(/*Criteria*/)
{
    myvar = (CustomType)byte.Parse(ddl1.Text);
}
else
{
    myvar = null;
}