AutoMapper 2.0では、プロファイルを使用してマッピングを設定しました。私はSourceMemberNameTransformer
とDestinationMemberNameTransformer
を使用して、ソースと宛先のプロパティ名を一致させます。AutoMapper 2.1.265のメンバーがいません
2.1.265では、これらのプロパティはプロファイル上に存在しません。彼らはなぜ彼らが削除されたか知っていますか?しかし、もっと重要なのは、どのようにしてこの機能を複製できるかです。
編集
私はSourceMemberNamingConvention
とDestinationMemberNamingConvention
で見てきたが、私はそれらの作業方法についての任意のドキュメントを見つけることができません。誰でもカスタムを使った経験がありますかINamingConvention
?
編集2
ソース・メンバーは、サードパーティのデータベースから生成されています。通常、それらは単語間にアンダースコアを含む小文字の列名をすべて使用します。時には彼らは下線を外し、時にはランダムな大文字小文字を投じることもあります。
宛先メンバーは、可能な限り.NET命名規則に従います。アンダースコアは削除され、アンダースコアに続く最初の文字は大文字になりました。メンバー名を読みやすくするために追加の変更が加えられました。この問題を解決するには
、私は未来からの人々のための
詳しい情報を編集3
SourceMemberNameTransformer = name => name.Replace("_", "").ToUpper()
DestinationMemberNameTransformer = name => name.ToUpper()
を設定します。
INamingConvention
がどのように使用されているかを確認するためにソースを調べました。それはそれが少し誤解を招くように設計されている方法。インタフェースは
public interface INamingConvention
{
Regex SplittingExpression { get; }
string SeparatorCharacter { get; }
}
しかし、AutoMapperユーザないのでSourceMemberNamingConvention
とDestinationMemberNamingConvention
両方に対するインタフェースの完全な定義は、それが先の型の各メンバーをとり、DestinationMemberNamingConvention.SplittingExpression
を適用befinedれます。その後、一致する部品を取り、SourceMemberNamingConvention.SeparatorCharacter
を使用してstring.Join
と呼び出します。次に、ソース・タイプ・メンバーを宛先タイプ・メンバーと照合しようとします。
これは機能の概要を説明するもので、完全な機能を説明するものではありません。これは単にINamingConvention
の使用方法を示し、SourceMemberNamingConvention.SplittingExpression
とDestinationMemberNamingConvention.SeparatorCharacter
が決して使用されないことを示すためのものです。
この戦略を使用して宛先メンバーを変換できない場合は、手動でプロパティをマップする必要があります。nemesv's answerが示唆しているとおりです。
はい、私はすでにそれを見ました。私は接頭辞や接尾辞で何もしないので、これは私を助けません。 – cadrell0
達成しようとしていることを示す例を教えてください。 – nemesv
私は質問を更新しました – cadrell0