0

プロジェクトで 2 つの Web サービスを参照しています。1 つが呼び出されEmailService、もう1 つが呼び出されTicketServiceます。

どちらにも というプロパティがありますEmail。そして、コードで次のことを行う必要があります。

var mail = new EmailService.Email();
mail.from = "something";
mail.to = "someone";
mail.subject = "subject";
mailService.Save(mail);

ticketService.Send(mail);

問題は、が名前空間からのオブジェクトをTicketService.Send()期待していることです。そのため、その時点で失敗します。EmailTicketService

この場合、キャストも機能しません。

ticketService.Send( (TicketService.Email)mail );

EmailService.Emailこれにより、式をからにキャストできないというエラーが表示されTicketService.Emailます。

AutoMapper のようなものを使用して、あるオブジェクトから別のオブジェクトに単純にマップできることを知っています。しかし、私はソリューションに別の依存関係を追加しません。

Email両方のオブジェクトが同一であるため、AutoMapper のようなものを追加する必要さえないかもしれません。おそらくこれを行う簡単な方法はありますか?

とにかく、どうすればこの問題を解決できますか?

4

1 に答える 1

0

ほら、何かを意地悪に他のものにキャストしたり、どこでもダックタイピングしたりしたい場合は、間違った言語を使用しています. C# は静的に型付けされた言語 (少し動的な要素が混在しています) であり、古い型を他の型にキャストすることはできません。

Automapper は解決策ですが、少しやり過ぎです。ただし、同じことを行うことができます。あるインスタンスを別のインスタンスに変換するメソッドを作成します。この質問を書くのに費やした時間よりもはるかに短い時間で済みます。

または、可能であれば、Email オブジェクトの同じインスタンスを使用するようにコードをリファクタリングします。しかし、いずれにせよ、まじめな話です。

于 2014-02-18T14:07:56.533 に答える