私は、かなり大きなXMLファイル(e-commerceオファー)を構築するライブラリに取り組んでいます。ビジネスクラスを使用してCSVデータ(形式が不明)からXMLデータ(固定形式)に変換されます。リフレクションを使用していますか?
私はビジネスクラス(ProductInfo、PriceInfoなど)を使用していますが、その中から結果のXMLを生成します。
私の最近の仕事は、このXMLをCSV入力ファイルから生成できる機能を実装することです。
CSVファイルにはあらかじめ定義された形式はなく、すべてのCSV列を固定XML形式の対応するものにマップするのはユーザーの仕事です(私たちはそれを可能にするアプリケーションを提供しています)。
基本的には、私のビジネスクラスのフィールドの1つに各列を割り当てます。「この列のすべてのデータはProductInfo.ShortDescriptionなどに入ります」。
私たちの書式は将来変更される可能性があります。更新され、拡張され続けるため、可能な限り一般的な実装をしたいと思います。私はと考え
ソリューションは以下の通りです:
- ライブラリがすべて利用可能/必須フィールド
- の名前を返します。私たちのユーザーは、私が含む(カスタム属性を実装
- これらのフィールドにCSVの列をマップしますフィールド名 - 文字列)、ビジネスクラスのすべてのフィールドにそれをマークします。したがって、すべての列をマップしてCSVでデータを送信したら、私のライブラリはProductInfoなどの作成を開始し、入力値を属性名で識別されるフィールドに割り当てます。これは反射によって行われます。
これは良い考えですか?パフォーマンスに関するいくつかの懸念があります(私はリフレクションが遅いことを知っています)。しかし、どのくらいの問題があるかはわかりません。私が知っておくべき他の問題はありますか?より良い選択肢はありますか?
これらのXMLファイルは後で送信されますが、それはデスクトップライブラリとアプリケーションですが、それでもローカルで行う必要があります。私は、プロジェクトアーキテクチャーについては言いませんが、これは多くの面では最適ではないと考えられています:)(単にimoではない) –