0

私はグーグルで問題を抱えていますが、答えが見つかりません。

AccountInquiry というクラスを継承する Account というクラスがあるとします。

AccountInquiry のインスタンスがある場合、これを効果的にコピーせずに Account のインスタンスに変換できますか。そうでない場合、これを管理する最善の方法は何ですか。

基本的には、誰かが私たちのウェブサイトで基本的な名前/電子メールフォームに入力してアカウントの問い合わせを作成すると、これが完了すると2番目のフォームが表示されます。この 2 番目のフォームが入力されると、アカウントの問い合わせがアカウントに変換されます。

どうもありがとう

サム

4

4 に答える 4

4

Accountが実際にあるとは思えませんAccountInquiry。同じプロパティをいくつか持っていたとしても、これらは 2 つの完全に別個のクラスであるべきだと思われます。

継承を使用する前に注意してください。それが本当に適切かどうかを検討してください。

この場合AccountInquiry、実際の実質的な検索基準のように聞こえますAccount-したがって、次のようなメソッドを使用して、クエリを実行できるサービスクラスが必要になる可能性があります。

List<Account> FindAccounts(AccountInquiry inquiry)

Accountまたは、単一のアカウントのみが一致する必要がある場合は、単に戻り値の型になります。ここでは「変換」は行われません。あるオブジェクトのプロパティを使用して別のオブジェクトを見つけるだけです。

(ちなみに、それは実際には調査ではなく調査であるべきだと思いますが、それは余談です。)

于 2012-08-23T08:10:12.610 に答える
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 に答える
0

これを効果的にコピーせずにアカウントのインスタンスに変換できますか

このシナリオでは、いいえ。AccountにキャストできますAccountInquiryが、その逆はできません。ただし、 AutoMapperなどのツールを使用して、フィールドのマッピングを簡単にすることができます。

別のアプローチとして、問題を完全に解決するAccountプロパティを作成することができます。AccountInquiry

于 2012-08-23T08:09:49.260 に答える
0

元のクラス (Account) が AccountInquiry からのダウンキャストである場合にのみアップキャストできるため、それは不可能です。

コピーは唯一のオプションです。

于 2012-08-23T08:07:37.593 に答える