2013-06-04 7 views
5

私はプライベートセッターを持つpublicプロパティを持つ入れ子の子クラスを持っています。親クラスではAutomapperを使用して子クラスにマップすることができ、プライベートセッターの値が設定されています。私が読んだことは、Automapperがこれをサポートしていないことと、プライベートセッターを設定するために子クラスにカスタムコンストラクターが必要であることを指摘しています。AutomapperはプライベートセッターOOBを使用する予定ですか?

リフレクションやプライベートセッターをマッピングする何かを使っているのは現在のバージョンですか?親クラスではChild.Propertyは設定できませんが、同じ場所でMapper.Mapがプロパティを設定できるので、セッターは間違いなくプライベートです。

+1

可能な複製:http://stackoverflow.com/questions/8355024/automapper-mapping-properties-with-private-setters – haim770

+1

複製:http://stackoverflow.com/questions/8355024/automapper-mapping-properties - with-private-setters。 –

+0

私の質問を正しく読んでください。あなたがリンクしている質問では、プライベートセッターでは機能していないとし、回避策としてコンストラクタパラメータを使用していますが、私の場合はプライベートセッターを直接マップできます。 – Monstieur

答えて

4

Automapperは、広範囲に反射を使用し、プライベートセッターを設定するために使用しない理由はありません。

実際には、あなたの質問まで私はそれが動作するのか分からなかった。

ユニットテストを見ると、プライベートセッターが自動的に設定されていることがわかります。 PrivateSetterInParentWorksをご覧ください。

注:Silverlight doesn't support setting private fields through reflection。したがって、この機能は動作しません。

+0

プライベートセッターを使用してFORBIDを使用できますか? – Kaerber

+0

@Kerber、[IgnoreAllPropertiesWithAnInaccessibleSetter](https://github.com/AutoMapper/AutoMapper/pull/423)メソッドを見てください。それは3.2.0に現れます。 –

関連する問題