Я борюсь с форматом для передачи значения в пользовательский ValueResolver.Я в основном пытаюсь преобразовать Int в и Object на основе моей ViewModel.Тем не менее, я не могу заставить его передать значение в мой ValueResolver
У меня есть следующий Custom ValueResolver:
public class CustomResolver : ValueResolver<CreateContainerViewModel, Container>
{
private int id = 0;
public CustomResolver(int? sourceId)
{
if(sourceId.HasValue)
id = sourceId.Value;
}
protected override Container ResolveCore(CreateContainerViewModel source)
{
if (id == 0) return null;
else
{
ISession _session = DependencyResolver.Current.GetService<ISessionFactory>().GetCurrentSession();
return _session.Get<Container>(id);
}
}
}
Он отлично работает, когда я создаю карту с использованием жестко закодированного типа intследующий код
Mapper.CreateMap<CreateContainerViewModel, Container>()
.ForMember(a => a.CurrentContainer, opt => opt.ResolveUsing(src => new CustomResolver(33)));
, но он не работает (исключение отображения), когда я пытаюсь получить значение из моей модели представления
Mapper.CreateMap<CreateContainerViewModel, Container>()
.ForMember(dest => dest.CurrentContainer, opt => opt.MapFrom(src => new CustomResolver(src.CurrentContainerId)));
Может ли кто-нибудь указать мне в направленииправильный синтаксис для передачи значения в пользовательский ValueResolver?
Спасибо
ОБНОВЛЕНИЕ:
в основном пытается написать что-то вроде этого:
public class IdToObjectResolver<T> : ValueResolver<int, T> where T : class
{
private ISession _session;
private int id;
public IdToObjectResolver(Nullable<int> sourceId)
{
_session = DependencyResolver.Current.GetService<ISessionFactory>().GetCurrentSession();
if(sourceId.HasValue)
id = sourceId.Value;
}
protected override T ResolveCore(int source)
{
return _session.Get<T>(source);
}
}
Этот код в настоящее время не имеет смысла, но просто пытается получить способ передачи в int ...