我有一个问题,我一直在谷歌搜索但无法找到答案。
假设您有一个名为Account的类,它继承自一个名为AccountInquiry的类。
如果您有AccountInquiry的实例,是否可以将其转换为Account实例而无需有效复制。如果不是,最好的方法是什么。
基本上有一些背景知识,当有人在我们的网站上填写基本的姓名/电子邮件表格时,会创建一个帐户查询,一旦他们完成了这个,他们将获得第二个表格。如果第二个表格填写,则帐户查询将转换为帐户。
非常感谢
萨姆
答案 0 :(得分:4)
它听起来不像是Account
AccountInquiry
。这听起来更像是两个完全独立的类,即使它们具有一些相同的属性。
在使用继承之前要小心 - 考虑它是否真的 。
在这种情况下,您的AccountInquiry
听起来像是真实Account
的有效搜索条件 - 所以您应该有一些能够执行查询的服务类,使用类似的方法:
List<Account> FindAccounts(AccountInquiry inquiry)
如果只匹配一个帐户,则可能只是Account
的返回类型。这里没有“转换” - 您只是使用一个对象的属性来查找另一个对象。
(我怀疑它应该是查询而不是查询顺便说一句,但那是暂时的。)
答案 1 :(得分:0)
如果原始班级(帐户)是来自AccountInquiry的向下投射,您只能进行投射,所以,不,这是不可能的。
复制是唯一的选择。
答案 2 :(得分:0)
是否可以将其转换为帐户实例而无需有效复制
在这种情况下,没有。 Account
可以归结为AccountInquiry
,但反之亦然。您可以使用AutoMapper之类的工具,以便更轻松地映射字段。
作为替代方法,您可以做的是使Account
成为AccountInquiry
的属性,这将完全消除问题。
答案 3 :(得分: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的任何方法,你可以。