具有通用 Class .NET Core 5 的自动映射器

Auto mapper with generic Class .NET Core 5

我已经在 Stack Overflow 上进行了搜索并在谷歌上进行了搜索,但我找不到任何关于此的帮助或建议。

我有一个通用的 class BusinessResult<TValue>,其值为 属性,我想创建一个 Automapper 以映射 属性 的值 [=13] =] 到 BusinessResult<TDestination> 的值 属性。

在 .NET Core 5 中使用 Automapper 有什么建议吗?

public class BusinessResult<TValue> : BusinessResult
    {
        /// <summary>
        /// Accesses the object stored in this BusinessResult.
        /// </summary>
        public TValue Value { get; set; }

        /// <summary>
        /// Creates a new empty BusinessResult, that can contain a TValue-typed value.
        /// </summary>
        public BusinessResult()
            : base()
        {

        }

        /// <summary>
        /// Creates a new BusinessResult, with the specified TValue-typed value.
        /// </summary>
        public BusinessResult(TValue value)
            : this()
        {
            Value = value;
        }
    }

Automapper 支持打开 generic registrations 所以你可以创建一个从 BusinessResult<>BusinessResult<>:

var cfg = new MapperConfiguration(cfg =>
{
    cfg.CreateMap(typeof(BusinessResult<>), typeof(BusinessResult<>));
    cfg.CreateMap<MyClass, MyClass1>();
});
var mapper = cfg.CreateMapper();
var result = mapper.Map<BusinessResult<MyClass1>>(new BusinessResult<MyClass>(new MyClass { Value = 42 }));
Console.WriteLine(result.Value.I); // prints 42

class MyClass
{
    public int I { get; set; }
}
class MyClass1
{
    public int I { get; set; }
}