への参照を追加しクラス:
public abstract class MappedTo<T>
{
public MappedTo()
{
Mapper.CreateMap(GetType(), typeof(T));
}
public T Convert()
{
return (T)Mapper.Map(this, this.GetType(), typeof(T));
}
}
から継承のViewModelクラスを作成します。前記ベース。 AutoMapperは残りの部分を処理する必要があり
class AddressViewModel : MappedTo<Address>
{
public string Line1 { get; set; }
public string City { get; set; }
public string State { get; set; }
}
:
static void Main(string[] args)
{
AddressViewModel addressVm = new AddressViewModel
{
Line1 = "555 Honolulu Street",
City = "Honolulu",
State = "HI"
};
Address address = addressVm.Convert();
Console.WriteLine(address.Line1);
Console.WriteLine(address.City);
Console.WriteLine(address.State);
Console.ReadLine();
}
あなたは空想を取得したい場合、あなたはできます別のViewModelベースcalssを作成することができますあなたがあなたのViewModelをマッピングしたいのですがどのDTO指定あなた自身ののTypeConverterに渡す:次に
public abstract class MappedTo<T, TConverter>
{
public MappedTo()
{
Mapper.CreateMap(GetType(), typeof(T)).ConvertUsing(typeof(TConverter));
}
public T Convert()
{
return (T)Mapper.Map(this, this.GetType(), typeof(T));
}
}
、あなたのDTOにあなたのViewModelから変換することができますしかし、あなたは、フィット感を参照してください。
public class AddressConverter : TypeConverter<AddressViewModel, Address>
{
protected override Address ConvertCore(AddressViewModel source)
{
return new Address
{
Line1 = source.Line1 + " foo",
City = source.City + " foo",
State = source.State + " foo"
};
}
}
たぶんそれは私ですが、ここでは本当に質問は表示されません。私はあなたの命名規則についていくつかの陳述をしていますが、それはどういう疑問がありますか? – spinon
更新された質問を参照してください! – johndoe