私はAutoMapperを使用して、一連のビジネスオブジェクトを一連のWCFDTOにマップしています(または間もなく使用する予定です)。それはまともなトリックのように見えました-レベルで行うべきかなりの量のトラブルシューティングがありました.CreateMap
、しかしそれは全体的にそれの価値があると感じました。アセンブリの外部からビジネスロジックを非表示にすることを決定するまで。
BOとマッパーは同じプロジェクトに住んでいます。それらは外部アセンブリDTOをスピンオフします。これはpublic
(とにかくチャネルを通過する必要があります)。DTOがその仕事をするようになったので、BOを公開する必要はありません。そのため、アクセサーをにリセットすると思いましたinternal
。Kaboomは自動マッピングになります。説明する:
(BLLからのコード、AutoMappingと同じ)
public class TestObject
{
private int _myID;
public int MyID
{
get { return _myID; }
set { _myID = value; }
}
}
(サービスレイヤーからのコード)
public class TestObjectDTO
{
private int _myID;
public int MyID
{
get { return _myID; }
set { _myID = value; }
}
}
これはうまくいくでしょう
Mapper.CreateMap<TestObject, TestObjectDTO>();
私がこれをするまで:
internal class TestObject
...
またはこれだけでも、TestObject
:
internal int MyID
誰かが私にこれを説明できますか?これを「バグ」と呼ぶことはやめますが、反射ベースのマッピングの目的全体、つまり、さまざまな目的のオブジェクトを流暢にスケーリングできるようにすることは、確かに矛盾しているようです。AMがマッピングを処理できず、アクセサーを制御できるのはなぜですか?