在 C# 中更改对象类型或解决方法
本文关键字:类型 解决 方法 对象 | 更新日期: 2023-09-27 18:34:33
我正在尝试优化我的代码,我有一个方法,我想根据提供给该方法的视图模型类型来填充视图模型的下拉列表。 我这样做的原因是为了减少冗余代码。
我意识到我正在以javascript的方式思考这个问题,所以我认为我正在使这比它需要的更难。
这是伪代码,它不起作用,因为您无法根据我的理解更改 C# 中的类型:
解决这个问题的最佳方法是什么?
编辑 从视图模型添加了代码以澄清我的问题。我正在尝试从两个不同的控制器方法调用相同的方法,并为每个控制器方法中的下拉菜单提供通用选择列表。
以下是视图模型中的常见代码:
[Display(Name = "What kind of Stuff?")]
public int? StuffId { get; set; }
public IEnumerable<SelectListItem> StuffTypes { get; set; }
以下是来自控制器的代码:
private void populateDropDownsPart2(Part2ViewModel part2viewmodel, PrintViewModel printviewmodel)
{
var currentviewmodel = (some initialization object);
if (part2viewmodel == null)
{
currentviewmodel = printviewmodel;
}
else
{
currentviewmodel = part2viewmodel;
}
var SomeDropDownContent = new SelectList(db.Stuff, "StuffId", "StuffName", studentmeddiet.StuffId);
currentviewmodel.SelectListOfStuff = SomeDropDownContent;
}
以下是来自不同视图的常见代码:
@Html.DropDownListFor(m => m.StuffId, Model.StuffTypes,"--Select--",new {name="StuffId" })
从纯粹的设计角度来看,您需要一个接口:
public interface ISelectableListOfStuff
{
SelectList SelectListOfStuff;
}
您希望此方法处理的任何视图模型都应实现该接口:
public Part2ViewModel : ISelectableListOfStuff
然后你的方法应该采用ISelectableListOfStuff:
private void populateDropDownsPart2(ISelectableListOfStuff selectableViewModel)
可以调用该方法并传入实现 ISelectableListOfStuff
接口类型的任何对象。