的方法使用匿名類型我有我使用如下的OrderMapper類:在接受通用
OrderMapper<Post> m = OrderMapper.For<Post>().Add("title", x => x.Title);
其中x是Post類型。問題是將其應用於匿名類型時。
var listOfAnonymousObjects = posts.SelectMany(x => x.PostsI18N, (Post, PostI18N) => new { Post, PostI18N });
OrderMapper<??> m = OrderMapper.For<??>().Add("title", x => x.Title);
其中x必須是listOfAnonymousObjects中的AnonymousObject類型。我的OrderMapper代碼是:
public class OrderMapper {
public static OrderMapper<T> For<T>() {
return new OrderMapper<T>();
}
}
public class OrderMapper<T> {
private readonly Dictionary<String, LambdaExpression> _mappings = new Dictionary<String, LambdaExpression>();
public OrderMapper<T> Add<K>(String source, Expression<Func<T, K>> target) {
if (!_mappings.ContainsKey(source))
_mappings.Add(source, target);
return this;
}
public LambdaExpression this[String source] {
get {
LambdaExpression target;
return _mappings.TryGetValue(source, out target) ? target : null;
}
} // this
}
如何做到這一點?
爲什麼不能用一個具體的類,而不是匿名之一? – juharr
@亞歷克斯:對不起?沒有理解你的評論。 –
訣竅是使用類型推斷,而不是手動指定泛型類型參數。看看LINQ是怎麼做到的:) – Luaan