For types known at compile-time, use a generic parameter with Query<T>
.
public class Dog
{
public int? Age { get; set; }
public Guid Id { get; set; }
public string Name { get; set; }
public float? Weight { get; set; }
public int IgnoredProperty { get { return 1; } }
}
//
IDBConnection db = /* ... */;
var @params = new { age = 3 };
var sql = "SELECT * FROM dbo.Dogs WHERE Age = @age";
IEnumerable<Dog> dogs = db.Query<Dog>(sql, @params);