返回自定义动态类型

时间:2014-04-06 11:53:24

标签: c# dapper

我们从Dapper返回的DTO类使用提供有关每个属性(由UI使用)的元数据的属性进行修饰,例如:

public class Person
{
    [Metadata("First Name")]
    public string FirstName { get; set; }
    [Metadata("Last Name")]
    public string LastName { get; set; }
}

在某些情况下,从表格返回的对象可能因客户而异。它们通常具有一组“公共”字段,然后是一组自定义字段,例如Person.Foo

为方便起见,我们打算使用动态对象(派生自System.Dynamic.DynamicObject)。

public class DynamicPerson : DynamicDto
{
    [Metadata("First Name")]
    public string FirstName { get; set; }
    [Metadata("Last Name")]
    public string LastName { get; set; }
}

我们的想法是,我们可以反映实例属性以获取其元数据,然后使用其他机制来获取动态属性元数据。

当我运行以下测试时:

var query = "select 'Ben' as FirstName, 'Foster' as LastName, 25 as Age";
var people = cn.Query<DynamicPerson>(query);

仅设置了我的实例属性(FirstName和LastName)。如何使Dapper设置实例上不存在的动态属性?

0 个答案:

没有答案