Tôi mới sử dụng Automapper, vì vậy tôi không chắc liệu điều này có thể thực hiện được hay không.Có thể Automapper bỏ qua các phương thức void không?
Tôi muốn ánh xạ một lớp, nhưng làm cho nó bỏ qua các phương thức bị vô hiệu. Dưới đây là minh họa cho mã tôi có. Khi tôi chạy nó, tôi nhận được thông báo ngoại lệ sau.
Một ngoại lệ unhandled của loại 'AutoMapper.AutoMapperMappingException' xảy ra ở AutoMapper.dll
Đáng tiếc là nó không phải là một lựa chọn để thay đổi giao diện, vì vậy tôi giả định nếu điều này là có thể có một số loại cấu hình tôi đang thiếu?
public interface IThing
{
string Name { get; set; }
void IgnoreMe();
}
public class Foo : IThing
{
public string Name { get; set; }
public void IgnoreMe()
{
}
}
class Program
{
static void Main(string[] args)
{
var fooSource = new Foo {Name = "Bobby"};
Mapper.CreateMap<IThing, IThing>();
var fooDestination = Mapper.Map<IThing>(fooSource);
Console.WriteLine(fooDestination.Name);
Console.ReadLine();
}
}
Bạn có thể dùng lệnh 'ConstructUsing' để xác định thực hiện Automapper nên tạo:' Mapper.CreateMap(). ConstructUsing ((ResolutionContext c) => new Foo()); ' –
nemesv
@nemesv cảm ơn, đã hoạt động! –
Bằng cách bạn đang sử dụng 'IThing' làm loại đích? Bởi vì 'Mapper.CreateMap();' cũng sẽ hoạt động ... –
nemesv