0

我有一个问题,我一直在谷歌搜索,但找不到答案。

假设您有一个名为 Account 的类,它继承自一个名为 AccountInquiry 的类。

如果您有一个 AccountInquiry 实例,您能否将其转换为 Account 实例而不有效地复制它。如果不是什么是管理这个的最佳方法。

基本上有一点背景知识,当有人在我们的网站上填写基本的姓名/电子邮件表格时,会创建一个帐户查询,一旦他们完成此操作,他们就会看到第二个表格。如果填写第二张表格,则将帐户查询转换为帐户。

非常感谢

山姆

4

4 回答 4

4

这听起来不像Account真的一个AccountInquiry。这听起来更像是两个完全独立的类,即使它们具有一些相同的属性。

在使用继承之前要小心——考虑它是否真的合适。

在这种情况下,您AccountInquiry听起来像是一个真实的有效搜索条件Account-因此您可能应该有一些能够执行查询的服务类,其方法如下:

List<Account> FindAccounts(AccountInquiry inquiry)

或者可能只是一个返回类型,Account如果只匹配一个帐户。这里没有进行“转换”——您只需使用一个对象的属性来查找另一个对象。

(我怀疑它真的应该是询问而不是顺便询问,但这是一个旁白。)

于 2012-08-23T08:10:12.610 回答
0

如果原始类(帐户)是 AccountInquiry 的向下转换,则只能向上转换,所以,不,这是不可能的。

复制是唯一的选择。

于 2012-08-23T08:07:37.593 回答
0

你能在不有效复制的情况下将其转换为 Account 的实例吗

在这种情况下,没有。Account可以降级,AccountInquiry但反之则不行。您可以使用AutoMapper之类的工具来更轻松地映射字段。

作为一种替代方法,您可以做的是创建一个可以完全消除问题Account的属性。AccountInquiry

于 2012-08-23T08:09:49.260 回答
0

你不能,但是 ¿ 这个怎么样?

Account account = new Account();

account.CustomerID = 25;

account.MaxAmount = (decimal)5000.00;

进而

((AccountInquiry)account).Method = "ListChanges";
((AccountInquiry)account).StartDate = DateTime.Today.AddDays(-10);
((AccountInquiry)account).EndDate = DateTime.Today;

然后,如果您需要传递给他的参数应该是 Type 的任何方法,您可以。

于 2012-08-23T08:18:17.407 回答