gpt4 book ai didi

c# - 通用接口(interface)作为方法参数并查看字段

转载 作者:行者123 更新时间:2023-12-03 19:28:40 25 4
gpt4 key购买 nike

这可能是我的天真暴露了,但无论如何......

我有一个通用接口(interface),它定义了一组跨实现的标准方法(以不同方式实现)。

我将接口(interface)作为参数传递给方法,该方法负责持久保存到数据库。例如。我有一些从通用接口(interface)(称为 IEntry)定义的称为错误、事件等的实现。这些具体实现还利用了 IEnumerable

因为bug不同于事件,所以有不同的字段。当我将接口(interface)作为参数传递给方法时,有什么方法可以推断类型吗?因此,如果我传入 Bug 对象,我可以使用它的字段,这些字段与 Incident 中的字段不同。这些字段对于数据库的持久化很有用。我假设没有,因为没有办法知道要传递的类型是什么(显然),但我知道这里的人有更多的智慧。在那种情况下,有没有更好的做事方式?由于相似性,我想坚持接口(interface)。

编辑:我想另一种方法是利用一些流量控制来动态生成 sql 语句,然后将其作为参数传递。

谢谢

最佳答案

关于传递对象和接口(interface)的事情是你真的不应该关心实际类型,只要它继承自/实现你感兴趣的特定基类/接口(interface)即可。

因此,在该方法中构建逻辑以找出它是一个错误,然后访问仅存在错误的内容,这基本上不是 OOP 方式,尽管在您的特定情况下它可能是“最佳”方式。

但是,我会反对它,而是尝试构建一个具有多态性的适当 OOP 方法来处理差异,而不是将其作为特殊情况构建到方法中。

你提到持久化,这个方法是否负责将数据存储在某个地方?也许您可以将收集要存储的信息的部分与存储信息的部分分开,这样您就可以要求对象本身为您提供所有相关信息,这些信息可能因类而异。

关于c# - 通用接口(interface)作为方法参数并查看字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/499902/

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