2012-08-23 84 views
0

我有一個問題,我一直在谷歌搜索,但無法找到答案。C#專業實例類

說,如果你有一類稱爲帳戶從一個叫AccountInquiry類繼承。

如果你有AccountInquiry的一個實例,你可以轉換到這個賬戶的實例沒有有效地複製它。如果不是什麼是管理這個最好的方法。

基本上有點背景的,當有人在我們的網站上一個基本的名稱/電子郵件的形式罷了,創建一個賬戶查詢,一旦他們這樣做了,他們都帶有一個第二形式。如果這個第二個表格填寫賬戶查詢被轉換成一個賬戶。

非常感謝

山姆

+0

不是不可能:( –

+1

一個帳戶不是AccountInquiry,所以帳戶不應該繼承AccountInquiry,而是給Account一個構造函數接受一個AccountInquiry參數,除此之外,我不明白這個問題 – JohnB

回答

4

它聽起來不像Account真的AccountInquiry。這聽起來更像是兩個完全分開的類,即使它們有一些相同的屬性。

在使用繼承之前要小心 - 考慮是否真的是否合適。

在這種情況下,你AccountInquiry聽起來像它的有效搜索條件的真正Account - 所以你可能應該有一些服務類,這是能夠執行查詢,用的方法是這樣的:

List<Account> FindAccounts(AccountInquiry inquiry) 

或者如果只有一個帳戶應該匹配,可能只是一個返回類型Account。這裏沒有「轉換」 - 你只需要使用一個對象的屬性來找到另一個對象。

(我懷疑它真的應該查詢而不是由路查詢,但這是題外話。)

+0

謝謝你和@James,我有一種感覺,可能是這種情況,我在查詢中創建了一個Account屬性,所以刪除繼承是有道理的,我想我會把它們當作2個獨立的實體,只是將帳戶作爲查詢屬性(如果它爲空,那麼該帳戶已創建) –

+0

我從來沒有注意到錯誤名稱中的錯字,所以非常感謝!它不會讓我接受您的答案。分鐘,但我高興地接受你的建議:) –

0

您只能向上轉換,如果原始類(賬戶)是從一個AccountInquiry向下轉換所以,不,這是不可能的。

複製是唯一的選擇。

0

你能轉換到這個賬戶的實例沒有有效地複製它

在這種情況下,沒有。 Account可以降爲AccountInquiry,但反之亦然。你可以使用像AutoMapper這樣的工具來更容易地映射字段。

作爲一種替代方法,您可以做的是使Account屬於AccountInquiry,這將完全消除問題。

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; 

然後,如果你需要傳遞給他的參數的類型應該可以在任何方法。