gpt4 book ai didi

c# - ASP.net mvc 中非 UI 级别的 SelectListItem[] 替代方案

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:07 25 4
gpt4 key购买 nike

我见过 SelectListItem[] 的用法在 BL、DAL 等不在 aps.net MVC 项目中的级别。

我倾向于使用任何 IEnumerable<KeyValuePair<string, string>> 的东西相反,例如Dictionary<string,string>比较Creating the IEnumerable<KeyValuePair<string, string>> Objects with C#?

我的理由是不添加对 Web.MVC 的额外依赖不需要时和SelectListItem属于 MVC 上下文,因为它比 IEnumerable<KeyValuePair<string, string>>

这些是合理的理由还是应该考虑与上述相反的观点。

是否有任何知名校长更喜欢其中一个,例如是否有原则在不需要时减少依赖性?

最佳答案

针对接口(interface)编程将有助于解耦组件并提高大型系统中的可重用性。

当您看到返回 IEnumerable<T> 的方法签名时,想一想它对您说了什么而不是 IList<T> .

您知道设计者希望您枚举结果,并且您可以合理地假设他们不打算让您就地改变结果。

在设计一个新的组件或库时,我首先会问自己我期望方法的任何一侧的行为。调用者是否真的需要提供 int[] ,或者我可以用 IEnumerable<int> 来度过难关吗? ?

此外,如果我需要数组,是否意味着我在向消费者强加意见? “你应该总是给我一个数组,因为我认为数组更好。”

同时,如果方法签名采用IDictionary<TKey, TValue> , 我可以很容易地交换一个 Dictionary<TKey, TValue>对于 ImmutableDictionary<TKey, TValue>如果我决定我的代码将从一些新的(大概)不可变集合中受益。

至于要不要减少依赖,我觉得是你们团队结合项目需求去思考的问题。但在适用和有益的地方用接口(interface)替换具体类型的问题:去做吧。

关于c# - ASP.net mvc 中非 UI 级别的 SelectListItem[] 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43839590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com