在类之间交换数据 - DI、IoC

发布于 2024-11-10 12:03:01 字数 539 浏览 2 评论 0原文

我的设置是:

class ModelA { ... }
interface IModelARetriever {  IEnumerable<ModelA> GetObjects(); }

class ModelB { ... }
class DomainObject { List<ModelB> ModelBList; }

可以使用 ModelA 对象列表中的操作数据来附加 DomainObject.ModelBList,但不是必需的。我应该把这个逻辑放在哪里?

我应该在 DomainObject 中创建一个采用 IEnumerable 的方法吗?这意味着更改可以创建 ModelB 对象的每个可能的数据源的 DomainObject

我应该创建一个单独的接口 ModelBFactory 并扩展它吗?这听起来最好,但只是想听听专家的意见。

My setup is:

class ModelA { ... }
interface IModelARetriever {  IEnumerable<ModelA> GetObjects(); }

class ModelB { ... }
class DomainObject { List<ModelB> ModelBList; }

DomainObject.ModelBList could be appended using manipulated data from lists of ModelA objects, but not neccessarily. Where should I put the logic for this?

Should I create a method in DomainObject that takes a IEnumerable<ModelA>? That would mean changing the DomainObject for every possible source of data that can create objects of ModelB.

Should I create a separate interface ModelBFactory and extend that? This sounds best, but just want an expert opinion.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半透明的墙 2024-11-17 12:03:01

如果我正确地阅读了问题,ModelA 对象可以转换为 ModelB 对象。我想说这需要 ModelA 上的 ToModelB() 方法。如果转换很简单(例如,只需复制 ModelA 的属性值的子集),我会直接在 ToModelB() 中实现它;如果它更复杂(例如,一些属性值的条件复制、值的组合、算术等),我会有一个 ModelAConverter 类来完成这项工作。

然后,我将您提到的 AddModelAObjects() 方法添加到 DomainObject。然后,您可以选择如何将 ModelA 转换为 ModelB - 您可以将 ModelAConverter 注入到 DomainObject 的构造函数并在 AddModelAObjects() 中进行转换,或者进入 ModelA 的构造函数并在 ToModelB() 中进行转换。我可能会选择后者,但这取决于对象还必须做什么。

If I've read the question correctly, ModelA objects can be converted into ModelB objects. I'd say that calls for a ToModelB() method on ModelA. If the conversion is straightforward (say, just copying a subset of ModelA's property values), I'd implement it in ToModelB() directly; if it's more complex (say, conditional copying of some property values, combination of values, arithmetic, etc) I'd have a ModelAConverter class which did the job.

I'd then add the AddModelAObjects() method you mentioned to DomainObject. You then have two choices of how you convert the ModelAs into ModelBs - you either have the ModelAConverter injected into DomainObject's constructor and do the conversion in AddModelAObjects(), or into ModelA's constructor and do the conversion in ToModelB(). I'd probably go with the latter, but it depends on what else the objects have to do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文