Mapster. Классы помеченные атрибутом не компилируются

Есть пара объектов

public record ProductDTO(string Title, string Description);
public record Product(string Id, string Name, string Description);

Хочу чтобы Mapser показывал ошибки маппинга при компиляции.

Если я добавлю конфигурацию через GlobalSettings.ForType, то получу то, чего и ожидаю:

Из-за не соответствия названия полей Title/Name и включенном RequireDestinationMemberSource при компиляции вызовется Exception

TypeAdapterConfig.GlobalSettings.RequireDestinationMemberSource = true;
TypeAdapterConfig.GlobalSettings.ForType<Bar, Foo>(); // Добавим конфигурацию
TypeAdapterConfig.GlobalSettings.Compile(); // Exception: corresponding source member mapped or ignored:Title

Как написано в документации, добавить конфигурацию можно и с помощью атрибутов [AdaptTo], [AdaptFrom]

[AdaptFrom(typeof(Product))]
public record ProductDTO(string Title, string Description);
public record Product(string Id, string Name, string Description);

Но в этом случае при компиляции ошибки не происходит, а происходит она уже при вызове метода Adapt

TypeAdapterConfig.GlobalSettings.RequireDestinationMemberSource = true;
TypeAdapterConfig.GlobalSettings.Compile(); // успешно

var product = new Product("1", "Name", "Description");
var productDTO = product.Adapt<ProductDTO>(); //Exception:corresponding source member mapped or ignored:Title

Добавление сканирования:

TypeAdapterConfig.GlobalSettings.Scan(Assembly.GetExecutingAssembly());

Проблемы не решает.

Как скомпилировать конфигурации Mapster, написанные через атрибуты?


Ответы (0 шт):