私は本当に個人的な好みとして質問2を話すことはありませんが、私は一般的に1つまたは複数のAutoMapper.Profile
を使用して、特定の目的(domaintoviewmodelなど)のために私のMapper.CreateMap
をすべて保持します。
public class ViewModelToDomainAutomapperProfile : Profile
{
public override string ProfileName
{
get
{
return "ViewModelToDomain";
}
}
protected override void Configure()
{
CreateMap<TripRegistrationViewModel, TripRegistration>()
.ForMember(x=>x.PingAttempts, y => y.Ignore())
.ForMember(x=>x.PingResponses, y => y.Ignore());
}
}
その後、私は私のプロファイルのすべてを追加し、マッパーを設定するブートストラップ(IInitializer
)を作成します。
public class AutoMapperInitializer : IInitializer
{
public void Execute()
{
Mapper.Initialize(x =>
{
x.AddProfile<DomainToViewModelAutomapperProfile>();
x.AddProfile<ViewModelToDomainAutomapperProfile>();
});
}
}
はその後、私のGlobal.asaxに私は彼らがExecute()
を実行してIInitializer
、ループのすべてのインスタンスを取得します。
foreach (var initializer in ObjectFactory.GetAllInstances<IInitializer>())
{
initializer.Execute();
}
これは私の一般的な戦略です。
ここでは、最終ステップの反映の実装があります。
var iInitializer = typeof(IInitializer);
List<IInitializer> initializers = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => iInitializer.IsAssignableFrom(p) && p.IsClass)
.Select(x => (IInitializer) Activator.CreateInstance(x)).ToList();
foreach (var initializer in initializers)
{
initializer.Execute();
}
私はこれが好きです。私は1つの質問を持っています。 'ObjectFactory.GetAllInstances'が何であるか分かりません。グーグルでは、それはStructureMapの一部であるようです。私はそれを使用したことがないので、.NET BCLの 'ObjectFactory.GetAllInstances'に相当するものがありますか?答えをありがとう。 :) –
iocコンテナを使用していない場合は、開始してください。構造マップは私が主に使うものですが、他にもあります。私は物事を行うネット反射の方法で私の答えを更新しました。その非常に単純な。 –
ありがとう、ネイサン! –