具有通用 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; }
}
我已经在 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; }
}