どれくらい悪いですか?私は無数の記事を読んだことがあります。以前は抽象的なDataContractsを作成したことはありませんでしたが、そうすることで、サブクラスの実装を決定する工場がどこからでも作成できなくなるという問題が解決されるようです。私の質問は、データ契約に行動を加えることにした場合、私は罰せられるのですか?もちろん、リポジトリ呼び出しを呼び出す前にそのサブクラスタイプに固有の特定の操作を実行してデータを保持することはできません。私は各サブクラスの "マネージャ"クラスを作成することができますが、それは工場に戻ってきます。もっと多態的なアプローチを試みています。前もって感謝します。動作しているデータコントラクト
答えて
古典的な方法でデータコントラクト(MyDataContract)を作成することはできません。なぜなら、データフィールドだけでは何もありません。
public class BehaviorialClass : MyDataContract
{
.....
}
こうすることで、あなたは懸念の素敵な、明確な分離を持って、あなたのデータコントラクトはそれが本当にとにかく扱うことができない行動によって「汚染」ではありません.....
マルク・
DataContractsに直接ビヘイビアを配置することは、コントラクトと同じアセンブリまたは別のアセンブリ全体のいずれかに、定義動作をextension methodsとして定義することです。必要に応じて、拡張メソッドを契約とは別の名前空間に配置して、データと動作の分離をさらに強化することができます。
あなたの契約はきれいに保たれますが、同時に契約の.NET消費者は、それらのDataContractsに関連する追加機能を簡単にインポートすることができます。
データコントラクトに必要なすべての動作を追加できます。あなたは、その行動がクライアントに見えない、または後で誰かが失望するという事実を明確に文書化する必要があります。実装に依存するデータをデータコントラクトに追加しないように気をつけなければならないという事実を文書化してください。これは、クライアントに渡すものではないからです。
私は、データ契約をデータ契約とし、行動を外したほうがよいと思います。
ある時点で、不必要な中間データ変換(さらに悪いことに、不要なメンテナンス)なしにMemberwiseCloneを使用してインターフェイスを実装したいと思うこともあります。拡張メソッドは、文字通りオブジェクト定義を制御することはできませんが、依然としてオブジェクト指向の流暢性が必要な場合に使用します。それ以外の状況ではビジーな作業を追加し、C/C++よりも悪いクラス定義を散布します。 「トレンド」を取り戻し、あなたのために何ができるのかを考えれば、(Jeffrey RichterのAsyncEnumeratorのような)ボールゲーム全体を変えるパターンを見つけることができます。
- 1. データコントラクトのデシリアライズでコードコントラクトを動作させる方法は?
- 2. 複数のJavaサービスが同じデータコントラクトを参照しています。 WCFクライアントが共有データコントラクト用の重複データコントラクトを生成する
- 3. C#シリアライゼーションとデータコントラクト
- 4. WCF "ArrayOfstring"データコントラクトのシリアライゼーションエラー
- 5. WCFはデータコントラクトを無視します
- 6. Dockerで動作しているTcpProxyが動作しない
- 7. Chrome、Firefoxで動作しているのにSafariで動作しているウェブサイト
- 8. Flexで動作しているが、Airで動作していないクッキー
- 9. 位置:モバイルで動作していない、デスクトップで動作している
- 10. jqGrid動作していないソートプロセスが動作しない
- 11. Session.getはステップバイステップデバッグで動作していますが、eclipseで動作している間は動作しません。
- 12. "if"が動作しているか "else"が動作しています
- 13. エンティティをデータコントラクトとして使用することは可能ですか?
- 14. エンティティをデータコントラクトとして公開する必要があります
- 15. のDataContractシリアル化の例外(データコントラクト名が期待されていない)
- 16. 自動リファレンスカウント動作していない
- 17. Sqlalchemy:Pycharmで動作していてもコマンドラインでは動作していないOperationalError
- 18. mysqlが動作していない、起動していない
- 19. MultyQueryがphpmyadminで動作し、Mysqliで動作していない、他のサーバで動作していた
- 20. ubuntu tsqlが動作していて、isqlが動作していません
- 21. RewriteRuleが動作していないか、動作していませんか?
- 22. jQuery 1.3.2のアコーディオンが動作していない(1.3で動作していた!)
- 23. Androidで動作しているが、IPad/IPhoneで動作しないダイレクトアップデート
- 24. once()が完全に動作している間にadmin.ref.on()が動作しない
- 25. php shell_execがシェルで動作している間に動作しない
- 26. eslint - npmで動作しているときに動作しない
- 27. WCFデータコントラクトにクラスインスタンスを含めるにはどうすればいいですか?
- 28. 重複しているリンクで動作していないリンク
- 29. Android - ログインしているユーザーが動作していない(Firebase)
- 30. ラジオボタンが動作しているリストビュー
'データ契約をデータ契約にして、その行動を外す方が良いと思います。 それに気づく! –