使用通用扩展方法来映射实体以查看模型

时间:2019-03-10 10:12:53

标签: c# automapper

我正在尝试创建一个适用于任何类的通用扩展方法,并将其数据映射到提供的另一个类。

我要实现的目标如下

我有一个User类,另一个是UserVM

User dbUser = new User();
UserVM userMapped = dbUser.MapToViewlModel<UserVM>();

从方法的内部实现中,我将使用AutoMapper Mapper.Map()

这是我的代码

public static class DataMapperExtensions
    {
        public static M MapToViewModel<M>(this T input)
            where T : class
            where M: class
        {
            return Mapper.Map<T, M>(input);
        }
    }

T永远不会编译,我什至尝试了以下代码:

public static class DataMapperExtensions<T> where T: class
    {
        public static M MapToViewModel<M>(this T input)
            where M: class
        {
            return Mapper.Map<T, M>(input);
        }
    }

DataMapperExtensions带有下划线,表示“扩展方法必须定义为非通用静态类”。

我要的甚至是可能吗? 请让我知道并提前感谢。

1 个答案:

答案 0 :(得分:1)

您需要使用

public static M MapToViewModel<T,M>(this T input)