我通过在页面的构造函数中包含对象的引用作为参数来将数据传递给C#中的Pages.我只使用页面中对象的一部分成员.对这样一个页面的调用如下所示:
new PageName(DataObject);
Run Code Online (Sandbox Code Playgroud)
DataObject设置为新页面的DataContext的位置:
this.DataContext = DataObject;
Run Code Online (Sandbox Code Playgroud)
从中我可以执行我需要在DataObject上执行的所有数据操作.此设置的一个关键功能是对DataContext所做的更改会影响传递的DataObject; 这是有意和可取的.
这很简单,现在效果很好.我所关心的一点是,PageName必须知道将DataContext强制转换为正确的对象类型,并且必须知道对象属性的名称,从而创建重要的耦合.这通常是可接受的耦合级别,还是值得努力传递ref参数以减少PageName和DataObject之间的耦合程度?
编辑:平均而言,如果我传递参数,我通常需要将4-5个参数传递给每个页面.并非每个页面都需要传递给它的相同参数.
有一个名为introduction parameter对象的重构.
它存在的事实指向具有对象而不是多个参数作为更易于维护的选项.
这是在多个位置的框架中使用的模式 - 参见Process和ProcessStartInfo- 当一个对象可以多种方式配置时,提供一个配置对象(是的,与对象紧密耦合)是一个设计决策.
如果配置对象只与它配置的对象一起使用,我真的没有看到这种耦合的问题.