Есть ли способ получить доступ к конвертеру в конвертере типов. Прямо сейчас, что плохо, я должен сделать ObjectFactory.GetInstance, чтобы получить экземпляр сеанса из StructureMap. Если бы мне удалось получить ссылку на mapper, я мог бы использовать это, чтобы получить экземпляр объекта, например mapper.Map, и избежать статического вызова метода в конвертере типов.Как получить ссылку на mapper в конвертере типов?
Так что этот код
public class AddBaseProductCommandConverter : TypeConverter<AddBaseProductService.AddBaseProduct, AddBaseProductCommand>
{
protected override AddBaseProductCommand ConvertCore(AddBaseProductService.AddBaseProduct source)
{
var session = ObjectFactory.GetNamedInstance<ISession>("PRDProd");
var marketingPlan = session.Get<MarketingPlan>(source.BaseProductInfo.MarketingPlanId);
var baseProductTemplate = session.Get<BaseProductTemplate>(source.BaseProductInfo.Code);
var benefitPeriod = session.Get<BenefitPeriod>(source.BaseProductInfo.BenefitPeriodCode);
var insuranceServiceType = session.Get<InsuranceServiceType>(source.BaseProductInfo.ServiceTypeCode);
var command = new AddBaseProductCommand
{
MarketingPlan = marketingPlan,
BaseProductTemplate = baseProductTemplate,
BenefitPeriod = benefitPeriod,
InsuranceServiceType = insuranceServiceType
};
return command;
}
}
Может быть переписано как это (я построить карту для каждого постоянного типа, который распознает NHibernate, во время конфигурации)
public class AddBaseProductCommandConverter : TypeConverter<AddBaseProductService.AddBaseProduct, AddBaseProductCommand>
{
protected override AddBaseProductCommand ConvertCore(AddBaseProductService.AddBaseProduct source)
{
var mapper = ????
var marketingPlan = mapper.Map<int,MarketingPlan(source.BaseProductInfo.MarketingPlanId);
var baseProductTemplate = mapper.Map<string,BaseProductTemplate>(source.BaseProductInfo.Code);
... and so on ...
return command;
}
}