2016-06-09 47 views
1

使用匿名類型我有下面的類與添加映射在泛型類

public class OrderMapper<T> { 
    public OrderMapper<T> Add<TKey>(Expression<Func<T, TKey>> expression, String name) { 
    } 
} 

我用如下:

OrderMapper<Post> mapper = new OrderMapper<Post>().Add(x => x.Created, "created"); 

的問題是,有時我有以下幾點:

posts.SelectMany(x => x.Category, (Post, Category) => new { Post, Category }); 

其中返回一個匿名類型列表:

var objects = new { Post post, Category category } 

我不知道如何創建該類型的OrderMapper ...

我想也許我需要改變我的類方法來像一個延伸:

OrderMapper mapper = objects.Add(...).Add(...) 

有人能告訴我做到這一點的最佳方式?

回答

3

可以使用Create方法爲OrderMapper類:

public class OrderMapper 
{ 
    public static OrderMapper<T> CreateMapperFor<T>(IEnumerable<T> typeProvider) 
    { 
     return new OrderMapper<T>(); 
    } 
} 

而且,用它作爲這樣的:

var objects = Enumerable.Repeat(new { /* ... */ }, 1); 
var mapper = OrderMapper.CreateMapperFor(objects) 
    .Add(/*...*/) 
    .Add(/*...*/); 
+0

裏面添加方法我需要訪問對象的類型,而不是類型因爲對象是對象列表的對象。 –

+0

@MiguelMoura哎呀!我已經更新了我的答案以解決問題。 – Xiaoy312