Я знаю, что этот общий вопрос решается во многих областях, но не для этого конкретного c сценария. У меня есть следующие объекты
public class AuditRecord
{
public long Id {get; private set; }
public Collaborator IssuedBy { get; private set; }
}
public class Collaborator
{
public Collaborator(Guid userId, string name, string email)
{
UserId = userId;
Name = name;
Email = email;
}
public Guid UserId { get; }
public string Name { get; }
public string Email { get; }
}
Как вы можете видеть, свойство IssuedBy имеет частный установщик. Есть ли собственный способ Dapper справиться с этим? Типичные примеры передачи fun c, в котором есть части, не будут работать, потому что они закрыты.
var resultData = await _connection.QueryAsync<AuditRecord, Collaborator, AuditRecord>(AUDIT_INSERT_SQL,
(o, collaborator) =>
{
o.IssuedBy = collaborator;//Error CS0272 The property or indexer 'AuditRecord.IssuedBy' cannot be used in this context because the set accessor is inaccessible
return o;
});
раскрытие свойства как publi c или добавление метода, который делает то же самое, по существу нарушает инкапсуляцию правила.