【发布时间】:2013-10-31 10:35:21
【问题描述】:
我有两种不同类型的发票,一种是针对消费者的,另一种是针对企业的。我创建了一个“Invoice”抽象类,Consumer 和 Business 发票都继承自该类。消费者发票引用消费者实体,商业发票引用商业实体。
现在这很完美,但是当我在上下文类中有一组“发票”时,问题就出现了。 (其中基本上包含消费者和企业发票)。我无法获得对“业务”对象或“消费者”对象的引用。 (完全有道理......但我只是想知道我如何解决这个问题?我想这是一个很常见的场景?)
我是否只是在名为“GetInvoiceRecipient”的抽象类中创建一个返回“Recipient”对象的新方法?不过,此解决方案的唯一问题是现在我无法检索给定消费者或给定企业的发票?
【问题讨论】:
-
您可以使用 LINQ:
var businessInvoices = Invoices.Cast<BusinessInvoice>()。否则,收件人听起来很公平。这有点取决于你想做什么。最终目标是什么? -
对于这样的问题,最好包含简单的示例代码,而不是用文字解释你的类。
-
转换的问题是我必须检查它是否属于特定类型?
-
@Default:对于所有其他类型的发票都将失败。我认为您的意思是
.OfType<BusinessInvoice>(),它将过滤发票并仅返回商业发票。不过,他不应该分叉他的逻辑。Recipient方法是有意义的,只要消费者和企业都实现一个通用的IRecipient接口。 -
@user2909756
.OfType<BusinessInvoice>():)
标签: c# oop design-patterns inheritance