Вызов пользовательского конструктора с помощью Dapper?

Я пытаюсь использовать Dapper для взаимодействия с таблицами ASP.NET SQL Membership Provider. Я обернул класс SqlMembershipProvider и добавил дополнительный метод, чтобы получить MembershipUsers, учитывая определенные критерии, относящиеся к некоторым пользовательским таблицам, которые у меня есть.

При запросе данных с помощью Dapper, кажется, что Dapper сначала инстанцирует класс с конструктором без параметров, а затем "отображает" возвращаемые столбцы в свойства объекта.

Однако свойство UserName класса MembershipUser не имеет задатчика. Судя по строке 1417 в Dapper SqlMapper.cs, метод GetSettableProps() получает только устанавливаемые свойства.

Я попытался сделать запрос MultiMap, чтобы вызвать конструктор, но проблема в том, что объекты, переданные в запрос, уже не имеют UserName.

Я предполагаю, что могу изменить метод GetSettableProps(), но я не уверен, что это сработает, или повлияет ли это на мой существующий код.

Есть ли способ вызвать пользовательский конструктор, который есть у класса MembershipUser?

Или есть разумное изменение, которое я мог бы внести в Dapper, чтобы поддержать мою ситуацию?

** UPDATE **

Ответ Марка об использовании негенерического/динамического метода Query() был правильным, но для потомков вот метод, на который я ссылался в Dapper:

static List<PropInfo> GetSettableProps(Type t)
{
    return t
          .GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
          .Select(p => new PropInfo
          {
              Name = p.Name,
              Setter = p.DeclaringType == t ? p.GetSetMethod(true) : p.DeclaringType.GetProperty(p.Name).GetSetMethod(true),
              Type = p.PropertyType
          })
          .Where(info => info.Setter != null)
          .ToList();  
}
18
задан John Bubriski 25 January 2012 в 13:36
поделиться