Как решить абсолютный URL с помощью автоматического
Я хочу использовать automapper для создания абсолютного URL с помощью профиля Automappers. Какова лучшая практика делать это?
- Мои профили автоматически настраиваются при запуске.
Я использую Ioc-контейнер, если это может помочь.
SourceToDestinationProfile : Profile { public SourceToDestinationProfile() { var map = CreateMap<Source, Destination>(); map.ForMember(dst => dst.MyAbsoluteUrl, opt => opt.MapFrom(src => "http://www.thisiswhatiwant.com/" + src.MyRelativeUrl)); ... } }
Каким-то образом я динамически хочу подобрать базовый URL-адрес запроса (" http://www.thisiswhatiwant.com/"), чтобы можно было объединить его с моим родственником. Я знаю один способ сделать это, но это не красиво, то есть не может быть лучшим способом.
1 ответ
Я не знаю, это то, что вы ищете:
public class Source
{
public string Value1 { get; set; }
public string Value2 { get; set; }
}
public class Destination
{
public string Value1 { get; set; }
public string Value2 { get; set; }
}
public class ObjectResolver : IMemberValueResolver<Source, Destination, string, string>
{
public string Resolve(Source s, Destination d, string source, string dest, ResolutionContext context)
{
return (string)context.Items["domainUrl"] + source;
}
}
public class Program
{
public void Main()
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Source, Destination>()
.ForMember(o => o.Value1, opt => opt.ResolveUsing<ObjectResolver, string>(m=>m.Value1));
});
var mapper = config.CreateMapper();
Source sr = new Source();
sr.Value1 = "SourceValue1";
Destination de = new Destination();
de.Value1 = "dstvalue1";
mapper.Map(sr, de, opt => opt.Items["domainUrl"] = "http://test.com/");
}
}