универсальный картограф вызов другого картографа - PullRequest
0 голосов
/ 29 июня 2018

в старом приложении я использую отдельную карту для преобразования любой модели в модель и обратно. Теперь я хочу использовать универсальную функцию, но универсальная функция не вызывает визуальное отображение

public class GenericBll<TVModel, TMModel> where TVModel : class where TMModel : class
{
    public virtual IEnumerable<TVModel> GetAll()
    {
        var a = Instance.GetAll_asQuery().ToList();
        var b = a.Select(q=> Mapper.Map<TVModel,TMModel>(q)).ToList();
        //mapper not return true thing
        return b;
    }
}

это мой универсальный картограф

public partial class Mapper
{
    internal static TVModel Map<TMModel>(TMModel q)  where TMModel : class where TVModel : class
    {
    //want to this function call another but always run this :(
        throw new NotImplementedException();
    }

    public static MM.GroupDevides Map(GroupDevides e)
    {
        //map to MM.GroupDevides
    }
    public static GroupDevides Map(MM.GroupDevides e)
    {
         //map to GroupDevides
    }
}

я, м, новенький, пожалуйста, помогите

1 Ответ

0 голосов
/ 29 июня 2018

Я не уверен, что вы пытаетесь сделать, но если вы хотите вызвать Mapper.Map (q), где q имеет тип GroupDevides где-то, он использует универсальный метод и передает параметр, приведенный в TMModel.

Если вы хотите вызвать Mapper.Map (GroupDevides e), вам нужно вызвать его напрямую или позволить Mapper.Map (q) вызвать его в зависимости от типа q. Код для этого будет выглядеть примерно так:

class Mapper
{
    public static object Map<TMModel>(TMModel q) where TMModel : class
    {
        MethodInfo methodInfo = typeof(Mapper).GetMethod("Map", new Type[] { q.GetType() });

        if (methodInfo != null)
            return methodInfo.Invoke(null, new object[] { q });

        return null;
    }

    public static GroupDevides Map(MM.GroupDevides e)
    {
        //map to GroupDevides
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...