c# – 将逻辑放入ViewModel获取者中

c# – 将逻辑放入ViewModel获取者中,第1张

概述您如何将Get-logic放入ViewModel的getter中?就像是: public class DummyViewModel{ public int Id { get; set; } private DummyObject myObject; public DummyObject MyObject { get { 您如何将Get-logic放入viewmodel的getter中?就像是:

public class Dummyviewmodel{    public int ID { get; set; }    private DummyObject myObject;    public DummyObject MyObject    {        get        {            if (MyObject == null)            {                DummyRepository repo = new DummyRepository();                myObject = repo.Get(ID);            }            return myObject;        }    }}

这是不好的做法,还是完全没问题?通过在那里完成所有的get-logic,我发现我的控制器变得非常臃肿,但我真的很沮丧,我应该把它放在哪里……

我这样做的原因是我可以将viewmodel传递给不同类型的视图,并且只根据请求的属性执行必要的DB查找.

解决方法 将逻辑放入VM中的getter中没有任何问题 – VM的作用是将数据呈现给视图,并且它应该尽可能地“查看”(VIEw不应该做太多(如果任何)在显示之前对数据进行整形的工作).

例如,我在我的VM中使用名为GetAvailableClIEnts的属性,这将是VIEw绑定到的属性之一.该特定getter的工作是过滤数据 – IOW提供从完整列表(也保存在VM中)中选择的减少的数据集,通常使用liNQ过滤数据,这意味着我已经放置了一些自定义逻辑在吸气器中.

我不喜欢的是你的方法的其余部分,如果属性没有被填充,它会转到存储库并获取数据本身.对我来说这是一个禁忌,该财产完全违反了single responsibility的原则,使财产负担过重.更何况,一旦你开始将该属性绑定到UI,这不是一个好习惯 – 突然你的应用程序将在用户执行 *** 作时开始挂起,因为你的属性获取器已经被触发并且它决定调用数据库或web服务,并使更糟糕的是在UI线程上完成调用….它只是变得丑陋.

总结

以上是内存溢出为你收集整理的c# – 将逻辑放入ViewModel获取者中全部内容,希望文章能够帮你解决c# – 将逻辑放入ViewModel获取者中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1224374.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存