Mapster icon indicating copy to clipboard operation
Mapster copied to clipboard

Adapt/AdaptToType DOES NOT working with anonymous object that returned from method

Open tungnt-hemera opened this issue 1 year ago • 0 comments

using Mapster;
using MapsterMapper;

var foo = new Foo(1, 2);
var t = foo.Get();

// var bar = t.Adapt<Bar>(); // <== Failed: '<>f__AnonymousType0<int,int>' does not contain a definition for 'Adapt'
// var bar = t.BuildAdapter().AdaptToType<Bar>(); // <== Failed '<>f__AnonymousType0<int,int>' does not contain a definition for 'BuildAdapter'

var mapper = new Mapper(TypeAdapterConfig.GlobalSettings);
var bar = mapper.Map<Bar>(t); // <== OK

// var t = new { A = 1, B = 2 }; 
// var bar = t.Adapt<Bar>(); //  <== Failed: '<>f__AnonymousType0<int,int>' does not contain a definition for 'Adapt'
// var bar = t.BuildAdapter().AdaptToType<Bar>(); // <== OK

Console.WriteLine($"A = {bar.A}; B = {bar.B}");

public class Foo
{
    private int a;
    private int b;
    public Foo(int a, int b)
    {
        this.a = a;
        this.b = b;
    }
    public dynamic Get()
    {
        return new { A = a, B = b };
    }
}

public class Bar
{
    public int A { get; set; }
    public int B { get; set; }
}

But IMapper works. Why?

tungnt-hemera avatar Apr 23 '24 11:04 tungnt-hemera