###前提・実現したいこと
WPFでMVVMデザインパターンを意識してコードを書く際に
ReactiveProperty、ReactiveCollectionを利用すると捗ります。
プロパティを定義すると
VB
1Public Class Contact 2 Public ReadOnly Property Address As ReactiveProperty(Of String) = 3 New ReactiveProperty(Of String) 4 Public ReadOnly Property Orders As ReactiveCollection(Of Order) = 5 New ReactiveCollection(Of Order) 6 End Class
のような感じになると思います。
ContactInstance.Address.Value、
ContactInstance.Orders.Firstのように利用します。
このクラスインスタンス(Contact1)を別のクラスインスタンス(Contact2)へDeepコピーをしたいときに
1つ1つメンバを代入していけばできると思いますが、
簡略化するためにAutoMapperを使用したいです。
しかし、ReactivePropertyをReadOnlyで定義する必要があるため
このままではAutoMapperのマッピング定義を以下のようにしても
Address.ValueとOrdersのコレクションはコピーされません。
VB
1<Extension> 2Public Function Copy(Of T)(source As T) As T 3 Dim config = New AutoMapper.MapperConfiguration(Function(cfg) cfg.CreateMap(Of T, T)) 4 Dim mapper = config.CreateMapper() 5 Return mapper.Map(Of T)(source) 6End Function
VB
1Contact2 = Contact1.Copy()
どのようにすればコピーすることができるのでしょうか?
また、コピーする際は上記のような拡張メソッド形式で型を意識しなくともよいものとしたいです。
ReactivePropertyについて
https://github.com/runceel/ReactiveProperty/blob/master/README-ja.md
AutoMapperについて
http://automapper.org/
###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio 2015 Community(VB)
.Net Freamwork 4.6.1
ReactiveProperty 3.4.0.0
AutoMapper 5.1.1.0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。