我想为动态类型创建扩展方法,但出于某些原因,在编译代码时出现错误。下面是我的代码示例 这我使用的方法是如何为动态类型创建MVC扩展方法
public List<State> getStates()
{
return new List<State>(){
new State{StateID="1",StateName="Tamil Nadu"},
new State{StateID="2",StateName="Assam"},
new State{StateID="3",StateName="Andra"},
new State{StateID="4",StateName="bihar"},
new State{StateID="5",StateName="Bengal"},
};
}
和我的扩展方法是
public static class helper
{
public static IEnumerable<SelectListItem> getIntoDropDownState(this List<dynamic> data,string textField,string valueField)
{
return data.Select(x => new SelectListItem
{
Text = x.textField,
Value = x.valueField
});
}
}
我的编译错误,我得到的是
编译器错误信息:CS1928 : 'System.Collections.Generic.List' 不包含'getIntoDropDownState'的定义,并且最佳的 扩展符合HOD超载 “LearnAuthentication.Controllers.helper.getIntoDropDownState(System.Collections.Generic.List, 字符串,字符串)”有一些无效参数
我想用这样的扩展方法,而我面对不支持错误
@Html.DropDownListFor(x => x.StateID, new LearnAuthentication.Controllers.Address().getStates().getIntoDropDownState("StateName", "StateID"), "Select State", 0)
任何人都可以帮助
此代码编译为我。你遇到了什么错误? –
@ stephen.vakil你好我已更新错误,请看看。谢谢 –
@LijinJohn,那个扩展方法不会做你所描述的。你可以使用反射和泛型 – Nkosi