基本上我想将“某物”传递给一个函数,然后在函数中找出它是什么并根据它添加一个项目
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var db = new Data.SQLDataContext();
ddlSubject.DataSource = db.CONTACTSUBJECTs.Where(p => p.Live == true).OrderBy(p => p.Weight);
ddlSubject.DataBind();
//ddlSubject.Items.Insert(0, new ListItem("- Please select message subject -", "No subject given"));
AddItem(ddlSubject, "- Please select message subject -", "No subject given", 0);
}
}
protected void AddItem(object o, string t, string v, int i)
{
var item = o.GetType().ToString();
switch (item)
{
case "System.Web.UI.WebControls.DropDownList":
(DropDownList) o.Items.Insert(i, new ListItem(t, v));
break;
}
}
希望代码能比我解释得更好。我只是想知道这是否可能。
最佳答案
对此有许多不同的解决方案。首先,您正在做的事情实际上可能会奏效,但这绝对是错误的方法。
你可以:
使用 is
关键字:
protected void AddItem(object o, string t, string v, int i)
{
if(o is DropDownList) {
((DropDownList) o).Items.Insert(i, new ListItem(t, v));
}
}
使用重载:
protected void AddItem(DropDownList dropDown, string t, string v, int i) {
dropDown.Items.Insert(i, new ListItem(t, v));
}
protected void AddItem(Label l, string t, string v, int i) {
l.Text = t + v + i;
}
AddItem(ddlSubject, "- Please select message subject -", "No subject given", 0);
AddItem(lblSubject, "Hello", "World", 15);
使用通用类?想不出比使用重载更好/更快的通过泛型执行此操作的示例,但这绝对有可能。
关于c# - 将传递的对象转换为某种东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23564226/